我正在阅读一本书中的教程,其中委托和数据源与控制器分开(MyViewController.m)
[self setDataSource:[[MyViewDataSource alloc]
[self setDelegate:[[MyViewDelegate alloc]
为了理解,我现在想从委托类(MyViewDelegate.m)中弹出一个控制器
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
2ndViewController *controller = [[2ndViewController alloc]];
[[self navController] pushViewController:controller animated:YES];
当然,由于navcontroller位于app委托中,因此无法使用。但是,如何从委托类中最好地访问navcontroller?
答案 0 :(得分:2)
您可以执行类似
的操作UINavigationController *navController = [(MyAppDelegate*)[[UIApplication sharedApplication] delegate] navigationController];
但是,您应该问问自己为什么需要这样做,如果有更好的方法更符合MVC(模型视图控制器)和封装规则。
例如,UIViewController
提供了一个名为navigationController
的属性,如文档所述,该属性将返回给定视图控制器的相应导航控制器。