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

时间:2011-05-31 14:28:49

标签: xcode ios uitableview uinavigationcontroller

在我的程序视图中,我有一个按钮,使用此按钮,我打开一个子视图;此子视图是带有tableview的视图。当我推动一行tableview时,我想转到另一个视图,所以我想用导航控制器来做这个;我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

当您单击其中一个表行时,您的表视图委托将收到tableView:didSelectRowAtIndexPath:消息。

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

此示例代码(来自另一个answer of mine on S.O.)显示了如何执行此操作:

 UINavigationController* navigation = [[UINavigationController alloc] init];
 iVkViewController *overviewViewController = [[iVkViewController alloc] init];
 overviewViewController.title = @"First";
 [navigation pushViewController:overviewViewController animated:NO];

这可以帮助你顺利完成任务。

一方面注意:您可能会想到从一开始就拥有一个导航控制器,这会让您的UI更加“乖巧”,但这最终取决于您的应用程序要求。

答案 1 :(得分:0)

如果UIViewController addSubView是UITableViewController的视图,你想要推入tableView:didSelectRowAtIndexPath的方法,你应该检查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];