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