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 를 속도 저하 없이 볼 수 있다.
'3D world > Unreal Engine Games Review' 카테고리의 다른 글
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 |
최근댓글