[Swift3] SegmentdControl에서 View 전환

6682 단어 iOSSwiftswift3

하고 싶은 일



SegmentedControl에서 여러 View를 전환하고 싶은 장면은 자주 있다고 생각하므로, 망비록으로 써 남겨 둡니다.

화면 준비



먼저 다음과 같이 StoryBoard에서 NavigationController를 추가합니다.
NavigationController를 추가한 후 ViewController에 SegmentedControl을 설치합니다.
또, 이번에 전환하는 아이 ViewController는 코드상에서 작성하기로 합니다.



SegmentedControl 준비



SegmentedControl의 Segue를 ViewController에 생성합시다. IBAction을 만들 때 Type을 Any가 아닌 UISegmentedControl로 설정하여 다운 캐스트하지 않고받을 수 있습니다.



ViewController



소스는 다음과 같습니다. 이 예제에서는 MapViewController,ListViewController라는 두 개의 VC를 만들고 setup에서 해당 뷰를 추가합니다.

SegmentedControl이 탭되면 인수인 sender에서 selectedSegmentIndex로 탭한 항목을 검색할 수 있습니다. 색인은 왼쪽에서 순서대로 흔들립니다.

switch 문에서 항목에 따른 view를 최전면으로 이동시켜 화면 전환을 실시하고 있습니다.

ViewController.swift
import UIKit

class ViewController: UIViewController {

    var MapVC:MapViewController = MapViewController()
    var ListVC:ListViewController = ListViewController()

    @IBOutlet weak var segmentButton: UISegmentedControl!


    override func viewDidLoad() {
        super.viewDidLoad()

        setup()

    }


    func setup(){
        segmentButton.setTitle("Map", forSegmentAt: 0)
        segmentButton.setTitle("List", forSegmentAt: 1)

        MapVC.view.backgroundColor = UIColor.cyan
        ListVC.view.backgroundColor = UIColor.magenta

        self.view.addSubview(ListVC.view)
        self.view.addSubview(MapVC.view)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func segmentButton(_ sender: UISegmentedControl) {

        switch sender.selectedSegmentIndex {
        case 0:
            self.view.bringSubview(toFront: MapVC.view)
        case 1:
            self.view.bringSubview(toFront: ListVC.view)
        default:
            print("")
        }
    }
}

실행하면 아래와 같이 시안 화면이 표시되고 SegmentedControl을 탭하면 마젠타 화면을 표시할 수 있습니다.

좋은 웹페이지 즐겨찾기