- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 UITableView
和 UILabel
的 View ,据我所知,它工作得很好。我真的不想使用相同的 Controller 来管理 UIView
和 UITableView
,因为 UITableViewController
处理大量内务工作,并且根据 documentation :
If the view to be managed is a composite view in which a table view is one of multiple subviews, you must use a custom subclass of UIViewController to manage the table view (and other views). Do not use a UITableViewController object because this controller class sizes the table view to fill the screen between the navigation bar and the tab bar (if either are present).
为什么 Apple 警告不要使用它?如果我忽略此警告会发生什么?
更新:最初我引用了 Apple Documentation 中的以下内容:
You should not use view controllers to manage views that fill only a part of their window—that is, only part of the area defined by the application content rectangle. If you want to have an interface composed of several smaller views, embed them all in a single root view and manage that view with your view controller.
虽然这个问题可能与 UITableViewController
设计为全屏的原因有关,但它并不是完全相同的问题。
最佳答案
每个屏幕仅使用一个 View Controller 的主要实际原因是因为这是管理导航的唯一方法。
例如,假设您的屏幕有两个单独的 View Controller ,并且您使用导航 Controller 加载它。您推送两个 View Controller 中的哪一个以及如何加载和引用第二个 View Controller ? (更不用说同时协调两个独立 Controller 的开销了。)
我认为使用单个自定义 Controller 并不像您想象的那么麻烦。
请记住,TableviewDataSource 和 TableViewDelegate 不需要位于实际 Controller 中。Apple 模板只是为了方便而这样做。您可以将实现这两种协议(protocol)的方法放在一个类中,或者将它们分别放入自己的类中。然后,您只需将它们与自定义 Controller 中的表链接起来即可。这样,自定义 Controller 所要做的就是管理 TableView 本身的框架。所有配置和数据管理都将位于单独且独立的对象中。如果您需要来自其他 UI 元素的数据,自定义控件可以轻松地向它们发送消息。
这种灵 active 、定制性和封装性是首先使用委托(delegate)设计模式的原因。您可以自定义任何东西,而无需创建一个可以完成所有操作的怪物类。相反,您只需弹出一个委托(delegate)模块即可。
Edit01:回复评论
如果我正确理解您的布局,您的问题是 UITableViewController 被硬连线设置表格以填充可用 View 。大多数时候,表格 View 本身就是顶 View ,这是有效的。 UITableViewController 的主要功能是定位表格,因此如果您使用非标准布局,则不需要它。您可以只使用通用 View Controller 并让 Nib 设置表格的框架(或以编程方式执行)。就像我说的,很容易认为委托(delegate)和数据源方法必须位于 Controller 中,但事实并非如此。您应该完全删除 tableViewController,因为它在您的特定设计中没有任何作用。
关于iphone - 为什么 UITableViewController 不应该管理 Cocoa Touch 中窗口的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159686/
我正在使用 Swift 制作一个应用程序,但遇到了一个问题:我有一个系统,人们可以在其中发布“帖子”,并对这些“帖子”发表评论。 为了显示这一点,我有一个 UITableViewController
用户点击“远程”按钮,然后加载以下 UITableViewController: 然后用户选择我调用的任何值: [self.navigationController popViewController
在我离开页面并使用 UITabBarController 返回后,我的 TableViewController 在页面顶部留下了一个空隙。在初始加载时它很好,只有当我离开页面然后返回时才会出现间隙。我
我有一个 TableViewController (VC1) 设置为推送到另一个 TableViewController (VC2)。这个连接是通过从 VC1 到 VC2 的 ctrl-drag 在
在我的核心数据模型中,我有一个 Person 实体,它与 Course 实体具有“对多”关系(我还具有从 Course 到 Person 的反向“对一”关系)。 现在我有一个子类化的 UITableV
为什么不调用 numberOfSectionsInTableView 方法?如果我在 viewDidLoad 中添加 [self.tableView reloadData],它就会被调用,但即便如此,
在 UITableViewController 中,我有一个方法可以更新显示总价的底部工具栏。 public override UITableViewCell GetCell(UITa
我正在制作一个 iPad 应用程序,其中包含一个用于设置选项的 View 。这个“选项” View 有两个容器 View ,每个容器 View 都包含一个 TableView,其中包含两种不同的选项,
假设设置是 导航 Controller -> GradLevelUITableViewController -> DegreeUITableViewController -> View Control
我的问题是,这是否可能,如果可能,您将如何完成这项任务? 有人知道已经在使用此功能的应用程序,或者可以从哪里获得一些示例代码吗? 此外,如果我要在对主题了解不多的情况下自行实现此操作,您估计需要多长时
当 UITableViewController 的框架低于特定高度时,UITableViewController refreshControl 会出现问题。 就目前而言,我有一个 UIViewCont
我有我的主视图和一个 RoutinesTableViewController。 我想放松回到我的 VC 并尝试了这个: @IBAction func selectRoutine(segue:UISto
我是 swift 和 Xcode 的新手,我正在尝试一些事情。当我转到设置页面时,我想在设置页面(在应用程序中,而不是在设置 bundle 中)设置开关状态。 (我将segue设置为push)为此,我
我目前正在尝试将不同的实体从我的 CoreData 模型加载到一个 UITableView 中,但位于不同的部分下。我尝试过以下方法: override func tableView(tableVie
我试图让 tableview 适应 Swift 中键盘的显示。根据文档,如果 tableview 是 UITableViewController 的子类,它应该自动调整。已经在这里阅读了很多答案,只是
我想捕获UITableViewController中触摸点的x位置。网上描述的最简单的解决方案是UITapGestureRecognizer:enter link description here 但
我是 iPhone 编程的初学者。我的第一个应用程序是 UITableViewController 但现在我想尝试一下。这个想法是创建一个如下所示的自定义布局: 布局: ---------------
我有一个基于导航的应用程序,我将 UITableViewControllers 推送到堆栈上。我想向我的所有 UITableViewControllers 添加背景 UImage。不是 UIColor
在找到位置后,我尝试在 UITableViewController 中重新加载数据。这也意味着在 viewDidLoad 方法之后。我的类正在使用此接口(interface)扩展 UITableVie
我有一个TabBarController,其中一个选项卡包含一个 subview ,它是一个navigationController。然后,我将继承 UITableViewController 形式的
我是一名优秀的程序员,十分优秀!