假设我正在尝试创建类似“联系人”应用的应用。我有一个TableViewController(TVC),您可以在其中选择一个项目并查看有关它的所有信息。您可以点击编辑,然后显示带有静态单元格的TVC。此相同的TVC也用于添加新项目。
我目前正在尝试重用TVC。当用户编辑我的模型时,我将TVC推入导航堆栈,但是当用户创建新项目时,我会模态显示TVC。
显然,当自动按下TVC时,它将获得一个NavigationBar。另一方面,当我以模态形式显示它时,我创建了自己的NavigationBar(带有按钮和我需要的其他所有内容),并将其添加为子视图。这带来了两个问题:
NavigationBar在第一个单元格的顶部。
NavigationBar与其他单元格一起滚动。
就我所读的内容而言,这是因为我将NavigationBar添加到TVC本身。
在导航控制器中使用TableView听起来像是一个选项,但没有TVC,我的TableView就不能有静态单元格。
我曾考虑过不重复使用TVC,但是仍然遇到同样的问题,因为我需要顶部有条形的TVC。
模态显示时,如何将NavigationBar添加到具有静态单元格的TVC?
还有另一种解决这个问题的方法吗?
顺便说一句,我正在使用情节提要,并且我的目标是iOS6 +,所以我不能使用presentModalViewController:
最佳答案
您始终可以使用代码创建UINavigationController,然后将现有的表视图控制器设置为根视图控制器。然后,您可以模态呈现新创建的UINavigationController。
使用UINavigationController实例,您将添加一个UINavigationBar。
使用InstantiateViewControllerWithIdentifier方法从情节提要中获取现有的UITableViewController。不要忘记首先通过设置情节提要ID在情节提要中设置标识符。例如,下面我将标识符设置为CategoriesViewController。
然后,我可以使用以下代码获取它:
UITableViewController *tableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"CategoriesViewController"];
UINavigationController *navcon = [[UINavigationController alloc] initWithRootViewController:tableViewController];
[self presentViewController:navcon animated:YES completion:nil];