在以下情况下,使用UINavigationController的代码是什么?
所以我真的不确定在这种情况下在哪里/如何创建/保持/使用UINavigationController?这里的代码是什么样的,UINavigationController变量将保留在哪里,是否需要修改FlipSideView XIB?
PS。事实上,FlipSideview本身是否必须更改为在顶部包含导航栏? (然后我必须将现有模板的DONE按钮从它的导航栏模式化到新的UINavigationController导航栏我猜)
PSS。尝试这个但得到一个错误:
- (void)viewDidLoad
{
[super viewDidLoad];
self.uiNavController = [[UINavigationController alloc] initWithRootViewController:self];
self.navigationController = self.uiNavController;
// ==> error: object cannot be set - either readonly property or no setter found
}
答案 0 :(得分:1)
UINavigationControllers被设计为您的层次结构的ROOT视图控制器。
因此,在您的示例中,您应该让FlipSideViewController保持一个隐藏了NavigationBar的UINavigationController。然后,您可以将TableViewController作为“根”视图推送到堆栈。
当用户点击您的桌面视图中的单元格时,您可以实例化新视图&将它推到self.navigationController的堆栈中。确保将代码添加到新视图的viewWillAppear方法中以显示navigationBar&代码到viewDidDisappear再次隐藏navigationBar。
答案 1 :(得分:1)
为此,您的FlipSideViewController本身应该实现UINavigationControllerDelegate。
如何显示FlipSideView?
FlipSideViewController *flipSideView = [[FlipSideViewController alloc] init..];
[self presentModalViewController:flipSideView animated:YES];
[flipSodeView release];
喜欢这个????
然后你要把它改成
FlipSideViewController *flipSideView = [[FlipSideViewController alloc] init..];
UINavigationController *uiNavController = [[UINavigationController alloc] initWithRootViewController:flipSideView];
[self presentModalViewController:uiNavController animated:YES];
[flipSideView release];
[uiNavController release];