Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode IOS:在子视图中使用导航控制器_Xcode_Ios_Uitableview_Uinavigationcontroller - Fatal编程技术网

Xcode IOS:在子视图中使用导航控制器

Xcode IOS:在子视图中使用导航控制器,xcode,ios,uitableview,uinavigationcontroller,Xcode,Ios,Uitableview,Uinavigationcontroller,在我的程序视图中,我有一个按钮,用这个按钮我打开一个子视图;此子视图是具有tableview的视图。当我推一行tableview时,我想转到另一个视图,所以我想使用导航控制器来实现这一点;如何执行此操作?当您单击表的一行时,您的表视图代理将收到一条表视图:didSelectRowAtIndexPath:消息 您可以将代码放在那里以创建UINavigationController,并将其推送到新视图上 此示例代码(来自另一个示例代码)显示了如何做到这一点: UINavigationControl

在我的程序视图中,我有一个按钮,用这个按钮我打开一个子视图;此子视图是具有tableview的视图。当我推一行tableview时,我想转到另一个视图,所以我想使用导航控制器来实现这一点;如何执行此操作?

当您单击表的一行时,您的表视图代理将收到一条
表视图:didSelectRowAtIndexPath:
消息

您可以将代码放在那里以创建UINavigationController,并将其推送到新视图上

此示例代码(来自另一个示例代码)显示了如何做到这一点:

 UINavigationController* navigation = [[UINavigationController alloc] init];
 iVkViewController *overviewViewController = [[iVkViewController alloc] init];
 overviewViewController.title = @"First";
 [navigation pushViewController:overviewViewController animated:NO];
这将有助于你使事情步入正轨


一个注意事项:您可能会从一开始就考虑使用导航控制器,这将使您的UI更“良好”,但这最终取决于您的应用程序要求。

如果UIViewController添加了UITableViewController的子视图,您希望推入tableView的方法:didSelectRowatingIndexPath,您应该检查self.navigationController是否为nil。如果为零,您可能应该使用

[self.parentViewController.navigationController pushViewController:controller animated:YES];
如果self.parentViewController有时也为nil,则必须设置@property以指出UITableViewController中的parentViewController,如:

@property (nonatomic, weak) UIViewController *parentVC;
在UIViewController中:

UITableViewController *tableViewVC = [[UITableViewController alloc] init];
tableViewVC.parentVC = self;
在UITableViewController中,-tableView:didSelectRowAtIndexPath:

[self.parentVC.navigationController pushViewController:controller animated:YES];

然后我用tableview委托方法创建一个文件,在我将代码写入didSelectRowAtIndexPath之后,我有一个导航控制器?导航栏呢?是的,我的示例并不是指UITableViewController,而是指将通用视图(根据您的问题)推送到导航控制器上。如果这是另一个表视图,则需要像处理其他表视图一样处理它。实际上,您还可以在一个新的nib文件中定义表视图及其控制器,并将其加载到上面的代码中,这取决于您自己。默认情况下,导航控制器管理一个允许您返回的导航栏,因此您不需要对导航栏执行任何特殊操作(除非您希望自定义它)。不,我想要第一个子视图,其中是表视图,当我推送此表视图的一行时,我会转到第二个子视图(但这不是表视图)对不起,我误读了你的评论。你是对的,你需要一个委托,你还需要用它的视图控制器创建一个新的视图(你想把什么推到控制器上),我的代码将完成这个任务(包括导航栏)。如果你有问题,请提供详细信息……你有任何例子来说明吗?