view controller를 수용하는 것은 container view이다.


화면 구성을 자유롭게 하기 위해서는 single view controller에 다른 뷰를 넣는게 좋다.


splitView 즉, master-detail view 도 넣을 수 있다.


master detail view로 프로젝트를 생성하면 다음과 같이 app delegate에 들어간다.

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // Override point for customization after application launch.

        let splitViewController = self.window!.rootViewController as! UISplitViewController //에러

        let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController

        navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem


        splitViewController.delegate = self


그러나 일반적으로 didFinishLaunchingWithOption 에는 return true 밖에 없다.


@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {


    var window: UIWindow?



    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // Override point for customization after application launch.

        return true

    }



해당 구문 중 필요한 부분을 새로 만드는 singleView controller에 넣어준다.



class MainViewController : UIViewController, UISplitViewControllerDelegate {

    

    @IBOutlet var splitContainer: UIView!

    

    


    override func viewDidLoad() { let splitViewController = self.splitContainer.window!.rootViewController as! UISplitViewController



.

.

.


IB에서 container view의 기존 embed viewcontroller를 지우고 split view를 

embed 로 넣어주면 잘 들어간다.


왠만하면 코드로 다 그려주면 stroyboard를 하나로 유지하면서 모든 view 를 속도 저하 없이 볼 수 있다.


'!A. Basics' 카테고리의 다른 글

viewDidLoad()없는 뷰 제작시 사용하는 func name = entry  (0) 2019.01.27
UIStackView  (0) 2019.01.27
UIView 가장자리를 둥글게  (0) 2019.01.24
swiftdate  (0) 2019.01.24
[이전] 브런치 정리 중  (0) 2019.01.22

+ Recent posts