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 를 속도 저하 없이 볼 수 있다.
'HJH IT Logs' 카테고리의 다른 글
웹서버와 클라이언트 데이터 동기화 전략 (0) | 2019.01.26 |
---|---|
구글 드라이브 , 구글 파일 스트림 오픈소스 정보 (0) | 2019.01.26 |
이번 주 일기 (0) | 2019.01.26 |
Python과 C++을 연결하는 방법 (0) | 2019.01.26 |
IT 쪽 ROI 가 너무 낮게 나올 때.... (0) | 2019.01.26 |
최근댓글