从 Uipopovercontroller 列表视图内容调用多个视图
Posted
技术标签:
【中文标题】从 Uipopovercontroller 列表视图内容调用多个视图【英文标题】:Calling multiple views from Uipopovercontroller list view contents 【发布时间】:2012-06-17 04:27:34 【问题描述】:当我以最有效的方式点击弹出列表视图中的每一行时,如何调用单个视图控制器?这意味着,我不必重新编码以在每个单独的视图控制器中构建 Pop Over List View 组件,它们可以像导航工具一样共享它。
我所构建的
我在主视图控制器上构建了弹出视图控制器列表。 这是执行 appDidFinishLaunching 时加载的第一个视图。 因此,当我们运行应用程序时,我们会得到以下结果:
弹出列表视图的屏幕截图链接: http://s14.postimage.org/63k567vtd/image.png
对于上述 Pop Over 列表中的每一行,我有一个方法可以将代码放入: 1.确定选择了哪一行 2.根据选择的行,做任何动作,比如NSLog之类的 3. 所有这些代码都位于主视图控制器中
要求
我正在构建一个演示应用程序,因此目前所有数据都是虚拟数据。
-
当点击 Pop Over 列表中的每一行时,我需要调用单独的 View Controller。
每个视图控制器都有自己的数据集、自己的 UI 对象集和自己的 XIB 文件。
因此,如果用户点击应用程序,它必须调出应用程序 XIB 文件及其功能,然后从此处进行任何导航。如果应用程序 xib 有一个启动另一个视图的按钮,那么这个功能也应该到位。
但是,它们都必须具有相同的顶部导航栏和弹出列表按钮,以便用户可以随时在应用中点击该按钮并查看弹出列表。
请分享您的观点。 谢谢。
【问题讨论】:
【参考方案1】:我建议查看UISplitViewController
。它是 Apple 构建的一个组件,用于管理您正在尝试完成的任务。本质上,您使用 2 个视图控制器设置它;第一个(称为“主人”)将是您的表格视图。第二个(称为“细节”)是被切换出来的视图控制器。
一旦您稍微了解并熟悉了术语,以下是一般建议:
在主表视图控制器的didSelectRowAtIndexPath:
方法中,实例化适当的视图控制器(基于indexPath),并将其设置为详细视图控制器,如下所示:
- (void)tableView:tableView didSelectRowAtIndexPath:indexPath
UIViewController *newDetailVC = // make and configure a new VC based on indexPath
self.splitViewController.viewControllers = [NSArray arrayWithObjects: self, newDetailVC, nil]];
以下是相应的链接: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UISplitViewController_class/Reference/Reference.html#//apple_ref/occ/cl/UISplitViewController
以及进一步(后面的部分):http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html%23
【讨论】:
值得注意的是,有了这个组件,所有与显示和隐藏主部分相关的 UI 都为您处理,甚至在旋转时更改它。以上是关于从 Uipopovercontroller 列表视图内容调用多个视图的主要内容,如果未能解决你的问题,请参考以下文章
从 UICollectionViewCell 呈现一个 UIPopoverController
从 UIActionSheet 访问 UIPopoverController
从 UITableView 调用 UIPopoverController - objective-c