自定义 UISplitViewController?

Posted

技术标签:

【中文标题】自定义 UISplitViewController?【英文标题】:Custom UISplitViewController? 【发布时间】:2011-10-05 19:15:53 【问题描述】:

我想要 UISplitViewController 的效果,但是我没有使用拆分视图模板。

没有模板相对容易实现吗?并且使用普通的 UIViewController?

我想要一个自定义大小和定位的 UITableView,然后它有一个自定义大小的详细视图,然后在纵向时当然会进入弹出框和详细视图。

【问题讨论】:

【参考方案1】:

如果不使用 Interface Builder,您将创建一个 UIViewController 类。在该类的 viewDidLoad 方法中,创建一个 UIView 或 UITableView ,其中包含所需的框架原点和所需的大小。 (在 viewDidUnload 方法中释放它。)然后将 UIViewController 的 self.view 设置为指向这个新视图。

self.view = [[UIView alloc] initWithFrame:...];    // edit - added in response to your question

如果您创建了一个 UIView,那么您需要将您的 UITableView 放在这个新视图中。 (如果需要,这种方法可以让您向容器 UIView 添加更多项目。)

确保您的 UIViewController 遵守 UITableViewDelegate 和 UITableViewDataSource 协议。添加委托和数据源方法,你应该很高兴。

这个新视图可以覆盖其他视图,或者您可以调整其他视图的大小以适应它。你只需要根据你想用它们做什么来设置框架。

如果你使用 UITableViewController 会有一些限制,所以很多人建议使用 UIViewController。就像我上面描述的那样。您可以 google 以获取有关该主题的更多信息。

【讨论】:

"然后设置 UIViewController 的 self.view 指向这个新视图。"以什么方式指向新视图?我很确定我理解你所说的其他内容,所以我只是按照模板中看到的代码以及你提到的额外定制和我在那里,对吧? 在我的原始回复中查看我的编辑。这应该会有所帮助。如果您使用 IB,我相信这会自动为您完成,如果您正确连接一切。我更喜欢自己纠正代码,这样我就可以看到代码中的所有钩子。【参考方案2】:

从该模板中创建一个很棒的新临时 Xcode 项目,并判断自己是否对您来说很复杂,以熟练掌握您的(真实)代码。

【讨论】:

【参考方案3】:

是的。你可以很容易地做到这一点。只需使用委托在左侧视图和右侧视图(根视图和细节)之间传递消息。例如,didSelectRowAtIndexPath tableView 方法可以与委托一起使用,以将消息传递到右侧的详细视图。点击左侧表格上的一个单元格,将其文本显示为右侧的标签。它只是一个简单的例子。是的,您也可以处理旋转并将左侧视图发送到 UIPopoverController 中,从而在纵向方向提供详细视图全屏空间。

也可以试试MGSplitViewController。它在拆分视图控制器上为您提供了许多其他自定义选项。

【讨论】:

以上是关于自定义 UISplitViewController?的主要内容,如果未能解决你的问题,请参考以下文章

具有不是 UITableViewController 的自定义主视图控制器的 UISplitViewController

iOS标题和自定义按钮未出现在uisplitviewcontroller的详细视图中

带有自定义 selectedBackgroundView 的 UITableViewCell,它比 UISplitViewController 上的主视图控制器更宽

UISplitViewController - 并排或纵向叠加

UISplitViewController - BarButton 项目在开始时未显示

UISplitViewController - 在 iPad 风景中隐藏主视图