带导航的 Ipad 多个详细视图
Posted
技术标签:
【中文标题】带导航的 Ipad 多个详细视图【英文标题】:Ipad multiple detail views with navigation 【发布时间】:2012-06-20 05:44:04 【问题描述】:对于我的 ipad 应用程序,我有这样的要求
对于根视图中的每一行,我想显示不同的详细视图和
详细视图有一些按钮点击它会显示另一个视图(详细视图需要在导航控制器下)
谁能给我满足这个要求的教程/示例代码/视频?
我在这里尝试了 20 多个类似的问题并搜索了 youtube,但都没有运气。
我有一个链接http://kshitizghimire.com.np/uisplitviewcontroller-multipledetailviews-with-navigation-controller/,但是当我们在纵向模式下选择一行时,弹出框没有被隐藏。
任何帮助将不胜感激。
谢谢。
PS:我的要求是这样的
根视图 |— 选项 1 |—(用户导航控制器) | |OPT1_DETAILVIEW | |– OPT1_DRILLDOWNVIEW1 | |–OPT1_DRILLDOWNVIEW2 | |–等 |— 选项 2 |—(用户导航控制器) | |OPT2_DETAILVIEW | |– OPT2_DRILLDOWNVIEW1 | |–等 |— 选项 3 等【问题讨论】:
【参考方案1】:我的项目也遇到了这个问题。我使用以下代码完成了此操作
您需要做的是,当您点击根视图控制器的 tableview 的任何单元格时,您必须加载适当的视图控制器。
您必须在根视图控制器的 tableview 的 tableViewDidSelectRowaAtIndexPath 部分编写以下代码。
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
//Load previous controllers array.
NSMutableArray *viewControllerArray=[[NSMutableArray alloc] initWithArray:splitViewController.viewControllers];
//Remove last Detail View controller Object.
[viewControllerArray removeLastObject];
// Check appropirate row value.
if (indexPath.row == 0)
// Add new Detail controller in your array ...
FirstViewController *fvc=[[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
[viewControllerArray addObject:fvc];
else if (indexPath.row == 1)
// Add new Detail controller in your array ...
SecondViewController *svc=[[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
[viewControllerArray addObject:svc];
// And so on..
// Set New View Controllers of SplitViewController
[splitViewController setViewControllers:viewControllerArray];
[viewControllerArray release];
我做到了,它奏效了。我希望它会有所帮助。
【讨论】:
但我认为存在内存泄漏,因为当用户点击它们时也会不断添加对象,如何使详细视图控制器成为基于导航的,即能够推送视图 在我们创建和释放对象时可能没有泄漏。要制作基于导航的详细视图,您可以将 UINavigationController 放在 NIB 文件中,也可以在初始化视图控制器时添加它。 创建导航控制器。 UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:fvc]; [navController 发布]; 创建导航控制器。 UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:fvc];并将这个 navController 添加到数组 [viewControllerArray addObject:navController];并释放它 [navController release]; 感谢尼尔,如果你有时间可以看看kshitizghimire.com.np/wp-content/uploads/2011/01/… 并告诉我这是否很好用,还看看你是否可以修复弹出窗口不被隐藏在详细视图中代码以上是关于带导航的 Ipad 多个详细视图的主要内容,如果未能解决你的问题,请参考以下文章
iPad SplitViewController 带有用于详细视图的单独导航堆栈