自定义 UISplitViewController?
我想要 UISplitViewController 的效果,但是我没有使用分割视图模板。
没有模板的话是不是比较容易实现?并使用普通的 UIViewController 吗?
我想要的是一个习惯大小和位置的 UITableView,然后有一个习惯大小的详细视图,然后当然会在纵向时进入弹出窗口和详细视图。
I want the effect of a UISplitViewController however I am not using the split view template.
Is it relatively easy to achieve without the template? And with using normal UIViewController?
What I want it a customary sized and positioned UITableView which then has a customary sized detail view which then of course goes into a popover and detail view when portrait.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果没有 Interface Builder,您将创建一个 UIViewController 类。在该类的 viewDidLoad 方法中,创建一个具有所需框架原点和所需大小的 UIView 或 UITableView。 (在 viewDidUnload 方法中释放它。)然后设置 UIViewController 的 self.view 指向这个新视图。
如果您创建了一个 UIView,那么您将希望将 UITableView 放入这个新视图中。 (如果需要,此方法允许您向容器 UIView 添加更多项目。)
确保您的 UIViewController 遵守 UITableViewDelegate 和 UITableViewDataSource 协议。添加委托和数据源方法,您就可以开始了。
这个新视图可以覆盖其他视图,或者您可以调整其他视图的大小以适合其旁边。您只需根据您想要对它们执行的操作设置这些框架即可。
如果使用 UITableViewController 会有一些限制,因此很多人建议使用 UIViewController。就像我上面描述的那样。您可以通过谷歌搜索有关该主题的更多信息。
Doing it without Interface Builder, you would create a UIViewController class. In the viewDidLoad method of that class, create a UIView or a UITableView with the frame origin where you want it and a size that you want. (Release it in the viewDidUnload method.) Then set the UIViewController's self.view to point to this new view.
If you created a UIView, then you will want to put your UITableView inside this new view. (This approach lets you add more items to the container UIView if you need to.)
Make sure your UIViewController adheres to the UITableViewDelegate and UITableViewDataSource protocols. Add the delegate and datasource methods and you should be good to go.
This new view can cover other views, or you can size the other views to fit beside it. You only need to set there frames according to what you want to do with them.
There are some limitations if you use a UITableViewController, so a lot of people recommend using a UIViewController instead. like I described above. You can google for more info on that topic.
只需从该模板中创建一个新的临时 Xcode 项目,然后判断一下自己是否适合您的(真实)代码,如果这对您来说很复杂。
Just great a new temporary Xcode-project from that template and judge yourself, if it is complicated for you, to adept your (real) code.
是的。你可以很容易地做到。只需使用委托在左侧视图和右侧视图(根视图和详细信息)之间传递消息即可。例如,didSelectRowAtIndexPath tableView 方法可以与委托一起使用,将消息传递到右侧详细视图。点击左侧表格中的单元格,将其文本显示为右侧的标签。这只是一个简单的例子。是的,您可以处理旋转并将左侧视图发送到 UIPopoverController 中,从而以纵向方向提供详细视图全屏空间。
另请尝试 MGSplitViewController 。它为您提供了分割视图控制器上的许多其他自定义选项。
Yes. You can do it quite easily. Just use delegates to pass messages between the left and the right side views (root and detail). For instance the didSelectRowAtIndexPath tableView method could be used along with delegation to pass a message to the right sided detail view. Tap a cell on the left table, show its text as a Label on the right side. Its just a simple example. And yes you can handle the rotations and send left side view into a UIPopoverController as well, thus giving the detail view full screen real estate in Portrait orientation.
Also try MGSplitViewController . It gives you a lot of other customization options on a split view controller.