在UIViewController的視圖中有一個嵌套的視圖控制器的視圖在iOS中通常是不好的編程習慣嗎?舉例來說,我想要有一些可以響應用戶觸摸的互動元素,但只佔用屏幕的25%。UIViewController視圖中的iOS嵌套視圖控制器視圖?
我想我會說這樣的嵌套視圖控制器添加到我的UIViewController:
[self.view addSubview: nestedViewController.view];
在UIViewController的視圖中有一個嵌套的視圖控制器的視圖在iOS中通常是不好的編程習慣嗎?舉例來說,我想要有一些可以響應用戶觸摸的互動元素,但只佔用屏幕的25%。UIViewController視圖中的iOS嵌套視圖控制器視圖?
我想我會說這樣的嵌套視圖控制器添加到我的UIViewController:
[self.view addSubview: nestedViewController.view];
不,這總體上是好的設計,它有助於保持你的視圖控制器簡潔。但是,您應該使用視圖控制器遏制模式,請查看以下文檔。
Implementing a Container View Controller
此使用Interface Builder故事板以及是難以置信的簡單設置,您可以在對象庫看看容器視圖。
這是故事板中一個人爲的例子。在這個例子中,你將有4個視圖控制器,一個容納3個容器,每個容器一個。當您顯示具有所有容器的最左側控制器時,故事板將自動初始化並嵌入其他3.您可以通過childViewControllers
屬性訪問這些子視圖控制器,或者有一種方法可以覆蓋prepareForSegue:sender:
並捕獲目標視圖賽格控制器即將被調用。如果需要的話,也可以將屬性傳遞給子視圖控制器。
我把這個代碼在父視圖控制器。這對我很有效。
的OBJÇ
-(void)viewDidLoad{
[super viewDidLoad];
InnerViewController *innerViewController = [self.storyboard instantiateViewControllerWithIdentifier:INNER_VIEW_CONTROLLER];
[self addChildViewController:innerViewController];
[self.view addSubview:innerViewController.view];
[innerViewController didMoveToParentViewController:self];
}
夫特:
let childViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildViewController"),
self.addChildViewController(childViewController)
self.view.addSubview(childViewController.view)
childViewController.didMove(toParentViewController: self)
是的! +1。感謝您包括如何以編程方式執行此操作的答案:) – matrixugly
我只是將視圖從子視圖控制器拖放到父級子視圖的列表中。 – dimpiax
這是基於我的斯威夫特3溶液上斯威夫特開發商FB的回答
let childViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChildPageViewController"),
self.addChildViewController(childViewController)
self.view.addSubview(childViewController.view)
childViewController.didMove(toParentViewController: self)
這裏有很多圖片的完整教程! http://stackoverflow.com/a/23403979/294884享受 – Fattie