如何在 UIViewController 中显示 UITableView?
Posted
技术标签:
【中文标题】如何在 UIViewController 中显示 UITableView?【英文标题】:How to show UITableView inside UIViewController? 【发布时间】:2011-10-20 11:29:32 【问题描述】:我正在从 UITableViewController 推送 detailViewController (UIViewController)。 detailViewController 由 UITextView 和小的 UITableView 组成。我已将 detailViewController 设置为实现 UITableViewDataSource 和 UITableViewDelegate 协议的 UIViewController。我在 IB 中有委托和数据源出口。我有那些在 detailViewController 被推到顶部时调用的必需的表委托和数据源方法。我被称为设置节数 (1) 和节 (2) 中的行数的方法。问题是当 detailViewController 位于顶部时,我在屏幕上看不到我的 tableView。
我注意到 Xcode 在 detailViewController 中警告我关于 initWithStyle 它可能不会响应 [super initWithStyle:style]:
- (id)initWithStyle:(UITableViewStyle)style
self = [super initWithStyle:style];
if (self)
// Custom initialization
return self;
我知道它不属于 UIViewController 但如何解决?
更新:看来我的 tableView 已缩小。我在 IB 中为它设置了足够的高度和宽度,但看起来 tableView 以非常窄的一行出现在屏幕上,并且当表格填满行时它不会调整大小。恕我直言,它在某种程度上与无法调用 initWithStyle 有关。有没有人以其他方式实现了类似的解决方案?
【问题讨论】:
【参考方案1】:正如您所说,detailViewController
是UIViewController
的子类。 UIViewController
没有实现-initWithStyle:
,所以警告是合法的。
你不能从UITableViewController
继承detailViewController
吗?
如果您必须使用UIViewController
,则必须在detailedViewController
中创建tableView
插座,并且它应该连接到您在IB 中的表。你确定它已经完成了吗?
【讨论】:
不,我不能。我需要在 navigationController 堆栈上推送 detailViewController。只有 UIViewController 可能被推到顶部。UITableViewController
是UIViewController
的子类,因此您可以毫无问题地将其推送到导航控制器上。
如果我在 detailViewController @interface 声明中将父类从 UIViewController 更改为 UITableViewController,那么当我将 detailViewController 推送到导航堆栈时,程序会在运行时崩溃。
如果您只更改@interface
声明,它将与.xib
文件不同步,这可能是导致崩溃的原因。无论如何,UITableViewController
可能是您无论如何都想避免的事情,因为它对于添加其他用户界面元素而不是表格视图非常严格。您必须将文本编辑放在表格的页眉或页脚视图中。
帮助,我的情况完全相同,但我没有创建任何 .xib。我在 [init] 中创建 tableView 并在 viewDidLoad 中推送视图,但它仍然没有出现...:|以上是关于如何在 UIViewController 中显示 UITableView?的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift:如何在 UIViewController 中隐藏和显示按钮
如何在 ios5 的 UIViewController 中显示 UIView?
如何在 iOS SDK 中禁用 UIView/UIViewController 的“突出显示子视图”消息?
如何显示 SwiftUI 视图而不是 UIViewController?
iPad 应用程序,如何在 uiviewcontroller 之上显示 uiviewcontroller
如何根据 UINavigationController 中显示的 UIViewController 更改 UINavigationBar