带导航的 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 中详细视图的 SplitView 导航问题

iPad SplitViewController 带有用于详细视图的单独导航堆栈

UISplitViewController推送多个详细视图iPad?

如何创建一个带有导航栏和三个详细视图的应用程序?

在 ipad 设计布局中一次显示多个详细信息视图

iPad 详细设置页面,如弹出视图控制器