如果 UITableViewController 添加到其他 UIView,委托如何工作?

Posted

技术标签:

【中文标题】如果 UITableViewController 添加到其他 UIView,委托如何工作?【英文标题】:How delegation work if UITableViewController added to other UIView? 【发布时间】:2013-01-08 01:03:02 【问题描述】:

我想在 UIView 中显示一个 UITableViewController,我有一个解决方法,但我想了解它为什么会这样工作。

场景是这样的: - 创建了一个新的单一视图应用程序 - 在 IB 中向主视图添加了一个视图 - 为视图创建了一个出口:

@property (weak, nonatomic) IBOutlet UIView *placeholderView;

- 在项目中添加了一个带有 XIB 的新 UITableViewController - 将 numberOfSectionsInTableView 更改为返回 1,将 numberOfRowsInSection 更改为返回 10,并将 cellForRowAtIndexPath:

cell.textLabel.text = @"hello";

- 在 ViewController 文件中的 ViewDidLoad 方法:

ORGTableViewController *tableView = [[ORGTableViewController alloc] initWithNibName:@"ORGTableViewController" bundle:nil];

[self.placeholderView addSubview:tableView.tableView];

现在表格出现在 placeholderView 但它是空的。在 TableViewController 文件中调用 InitWithStyle 和 ViewDidLoad 方法。但是没有调用 numberOfSectionsInTableView、numberOfRowsInSection 和 cellForRowAtIndexPath。

还尝试在 AppDelegate 中将此代码添加到 didFinishLaunchingWithOptions 方法,并且它 -按预期工作,出现带有文本的单元格:

ORGTableViewController *tableViewController = [[ORGTableViewController alloc] initWithNibName:@"ORGTableViewController" bundle:nil];

self.window.rootViewController = tableViewController;

所以它起作用了,当我将 UITableViewController 添加到 UIView 时,它看起来好像委派搞砸了,解决方法很简单...... ViewController,viewDidLoad 方法:

ORGTableViewController *tableViewController = [[ORGTableViewController alloc] initWithNibName:@"ORGTableViewController" bundle:nil];
tableViewController.tableView.delegate = tableViewController;

[self.placeholderView addSubview:tableViewController.tableView];

您知道为什么委派以这种方式工作吗?

谢谢!

【问题讨论】:

【参考方案1】:

你的问题本身就有答案。在第一个代码中,您没有像在第二个代码中那样设置删除,而是将委托设置为 tableViewController.tableView.delegate = tableViewController;,这将调用在 tableViewController 中实现的委托方法。

如果您打算在placeholderView 类中实现委托方法,则需要将委托设置为`tableViewController.tableView.delegate = self;,然后在placeholderView 类中实现所有委托。那会奏效的。

如果只需要UITableView,也可以考虑将UITableView类子类化,添加为placeholderView的子视图。

【讨论】:

以上是关于如果 UITableViewController 添加到其他 UIView,委托如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewController 的最后一行被截断

UITableViewController 中的 iPhone 奇怪行为

UITableViewController 没有响应键盘

UITableViewController 保存问题

UITableViewController - 禁用选择

显示“这是啥?” UITableViewController 为空时的消息