我想让我的代码更加模块化和灵活。
因此,我没有将 tableViewDelegate 设置为 UIViewController,而是将 UITableViewController 的子类作为 tableView 数据源和委托。
基本上,原来的 UIViewController 为 UITableViewController 的子类提供了视图。
这样类似的表可以被几个 UIViewController 的子类使用。
在某些情况下,UIViewController 提供了 tableView,我只是在运行时切换 tableView 委托。
效果很好。
这是从 UITableViewController 继承的 BGTableViewDelegateMother 的代码(从 UIViewController.
@implementation BGTableViewDelegateMother
-(void) setDelegate:(id<BGTableViewDelegateMother>)delegate
{
_delegate=delegate;
self.view = self.delegate.tvDelegated; //So that viewWillAppear would work fine
[self view]; //load the view view didload is not called either
self.delegate.tvDelegated.delegate =self;
self.delegate.tvDelegated.dataSource=self;
}
好的。UITableViewController.view 用于一件事。现在它指向正确的 tableView,我希望 viewWillAppear 被调用。它不是
我认为每次显示 tableView 时,我至少应该 reloadData
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];//never called
[self.delegate.tvDelegated reloadData];
}
这段代码从未调用过。即使视图确实会出现。为什么?
viewDidLoad 也永远不会被调用。