是另一个UITableView问题。我有一个MainPageController
子类UIViewController
,我在界面构建器中将UITableView
拖到我的xib
中。我创建了一个单独的控制器(没有xib)专门处理UITableView
和其他UITableViews
之类的操作。我们说它名为CustomTableViewController
。它是UITableViewController
的子类,符合UITableViewDataSource
。
现在,在我的MainPageController
中,我想创建一个CustomTableViewController
的实例并让它"控制"我在MainPageController的xib中的UITableView实例。如何才能做到这一点?我对我的CustomTableViewController上的tableView
属性以及如何让myTableView
和myCustomTableViewController
相互连接感到困惑。
我尝试过像myTableView.dataSource = myCustomTableViewController;
这样的事情,但似乎没有任何事情发生。我甚至没有调用我的dataSource方法。
我正在关注此设计,因为我想将自定义控制器重用于我将在其他页面上使用的其他表视图。
答案 0 :(得分:1)
我对此进行了测试,发现它正常工作。这是应该做的 -
1)在MainPageController中,创建一个IBOutlet属性tableView并将其与MainPageController xib挂钩。
2)在MainPageController中,在viewDidLoad中创建CustomTableViewController的实例,并将数据源设置为CustomTableViewController实例 -
self.myCustomTableTableViewController = [[CustomTableViewController alloc] init];
self.tableView.dataSource = self.myCustomTableTableViewController;
这应该足以实现你所描述的内容。
MainPageController.h
#import <UIKit/UIKit.h>
@interface MainPageController : UIViewController
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end
MainPageController.m
#import "MainPageController.h"
#import "CustomTableViewController.h"
@interface ViewController ()
@property (strong, nonatomic) CustomTableViewController *customTableViewController;
@end
@implementation MainPageController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.customTableViewController = [[CustomTableViewController alloc] init];
self.tableView.dataSource = self.customTableViewController;
}
@end
答案 1 :(得分:0)
UITableViewController的_tableView是固有的。即使您使用xib创建一个新类,您也会注意到整个视图是一个tableview。当您将UITableView拖动到xib文件或故事板上的控制器中时,您只是创建一个自定义UITableView,并且您无法告诉它响应另一个控制器。我现在能想到的最简单的模式是:
CustomTableViewController应该是UIViewController的子类。在其中定义所有数据源函数。不要使用xib。
因为它是一个UIViewController,你可以为tableView添加一个IBOutlet。当您创建MainPageController的子类时,使其成为CustomTableViewController的子类,并设置tableView出口。
在IB中,将ViewController中UITableView的数据源和委托设置为类。它应该符合,因为它是CustomTableViewController的子类。