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