在另一个UIViewController中embeddedUIViewController视图

在我的应用程序中,我有一个login注册忘记词剑线框。 该过程的每个步骤都在一个单独的UIViewController ,所有这些都在同一个Storyboard ,并且每个控制器之间的转换都是animation的。 到现在为止还挺好。

现在我们改变了devise,所以所有的视图都有相同的背景元素和一个头(不完全是一个UINavigationBar ),我不喜欢animation的感觉,总是看起来实际上是相同的,但只是performance出不同的forms。 所以我正在考虑采用不同的方法,而不是推动整个控制器,只是显示/隐藏其视图,而是保持在同一个控制器中。

1)我第一次尝试实例化控制器,我想要显示的视图,并将其添加到当前视图。 就像是。-

 - (IBAction)btnRegisterPressed:(id)sender { _viewHome.hidden = YES; RegisterController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"registerNewUser"]; [self.view addSubview:controller.view]; } 

这一个将是完美的,因为我使用静态UITableViews我的forms,所以据我所知,我需要每个UITableViewController 。 但似乎IBOutletsIBActions被打破了。 这种方法在某种程度上是可能的吗? 如果是这样,这被认为是一个坏习惯?

2)我的第二个select是创build一个控制器内的所有视图,并正确显示/隐藏它们。 这将是一个难以维护,并有可能是我不得不忘记静态UITableViews

任何人都可以给我一些build议,哪个选项会更好,或者指向我失踪的其他任何可能的方法?

你的select#1不适合书面,但接近你应该考虑的方法。 您可以添加不同UIViewController的视图,但是当您这样做时,您应该使用在“自定义容器”中pipe理子视图控制器中描述的方法,以便父控制器正确pipe理其子控制器。

您可以根据需要为同一控制器使用尽可能多的表格视图。 委托方法包含激发方法本身的对象。

遵循这种方法(我不build议),你可以标记你的tableviews然后做:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; { if (tableView.tag == 1) { doStuff; } else if (tableView.tag == 2) { doOtherStuff; } } 

那么,我个人觉得我们应该让事情简单明了,让最终用户快速地使用你的应用程序。 animation在这方面起着重要的作用。 点击一个tableview的单元格推动另一个表视图,并有不同的UI小部件,如雪佛龙,表示过渡和用户并不感到惊讶。

只要你有适当的animation,在单个屏幕上显示所有内容并根据用户的行为隐藏/取消隐藏它们就没有问题。 例如,您可能已经看到TableView部分在水龙头上折叠/展开。

你需要权衡一下,根据你的申请来看看最合适的服装。 无论你决定我的build议是添加漂亮的animation,而不是简单的隐藏/取消隐藏。