在iOS中切换View Controller的最佳方法

use*_*140 12 iphone objective-c ipad ios

我的项目中有2个视图控制器.Inside View Controller1我想通过按下按钮切换到View Controller 2.目前我这样做

- (IBAction)startController2:(id)sender {

viewController1 vc2 = [[viewController2 alloc] init];
self.view = vc2.view;
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但按钮按下和第二个视图控制器之间出现了很大的延迟(4秒).如果我直接从AppDelegate调用viewController2加载更快的东西.我在这做错了什么.任何帮助是极大的赞赏.

ckh*_*han 39

需要考虑的几件事情.

第1部分:"我在这里做错了什么"?

  1. 你绝对不是故意的self.view = vc2.view.您只需将一个视图控制器负责另一个视图控制器的视图.你可能想说的是[self.view addSubview:vc2.view].仅这一点可能会解决您的问题, ......

  2. 实际上不要使用该解决方案.虽然它几乎直接来自一些流行的iPhone编程书中的样本,但这是一个坏主意.阅读"滥用UIViewControllers"以了解原因.

第2部分:你应该做什么

这一切都在"从其他视图控制器呈现视图控制器"一章中.

它将归结为:

  • 一个UINavigationController,(看到优秀的苹果直营店他们在这里),然后你只需[navigationController pushViewController:vc2]

  • 正如andoabhay建议的那样,一个"手动管理"的模态视图控制器堆栈

  • 正如杰森所说,明确地将VC作为另一个孩子的孩子