导航在目标 c 中不起作用
Posted
技术标签:
【中文标题】导航在目标 c 中不起作用【英文标题】:navigation not working in objective c 【发布时间】:2011-12-29 10:24:43 【问题描述】:我创建了一个 iPad 应用程序,其中导航不起作用, 例如单击 tableView 的单元格,它应该导航到新视图。
相同的代码 sn-p:
appDelegate.m
-(void)applicationDidFinishLaunching:(UIApplication *)application
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:navController.view];
[window addSubview:viewController.view];
[window makeKeyAndVisible];
在此之后,我正在创建 UIViewControllerSubclass,crollnext。
在这个文件中我正在执行一些操作,最后在我的 mainViewController
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
crollnext *crollController =[[crollnext alloc]initWithNibName:@"crollView" bundle:nil];
[self.navigationController pushViewController:crollController animated:YES];
[crollController changeProductText:[tableData objectAtIndex:indexPath.row]];
我的代码有错误吗?
这是截图
提前致谢
【问题讨论】:
【参考方案1】:[window addSubview:navController.view];
[window addSubview:viewController.view];
请注意,在添加 navController.view 之后,您正在将 viewController.view 添加到窗口视图堆栈的顶部。你应该做的是这样的:
UINavigationController navController=[[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:navController.view];
navController,对于它本身来说什么都不是。你需要用一些东西来填充它(在这种情况下你的 viewController 作为 rootViewController。
【讨论】:
【参考方案2】:删除这一行
[window addSubview:viewController.view];
【讨论】:
【参考方案3】:首先,您的应用委托方法中的viewController
对象是什么。还有为什么要将viewController 的视图添加到window
。您已将其添加为已添加到 window
的 navigationController
的根视图。所以你不需要将viewController
的视图添加到window
。
【讨论】:
viewController 是我班级的对象【参考方案4】:UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:viewController];
[self.window addSubview:navigationController.view];
【讨论】:
【参考方案5】:不要将视图控制器中的视图作为子视图添加到窗口中。而是将窗口的 rootViewController 属性设置为您的导航控制器。
【讨论】:
以上是关于导航在目标 c 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
通知在 Presentviewcontroller 目标-c 中不起作用