2010-07-30 26 views
3

在我的iPhone应用程序我有了一个UITableView和另一个UIView的,在它的XIB文件中,厦门国际银行的观点既包含的UITableView和其他UIView的一个UIViewController。两个视图都作为IBOutlets链接到xib文件中的相应视图。 当我想以编程方式为我在UIViewController中创建这样一个方法的UITableView设置数据源:的UITableView:编程设置数据源

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil tableDataSource:(id)dataSource{ 
if ((self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
    // Custom initialization 
    self.inventoryTableView.dataSource = dataSource; 
    //[self.inventoryTableView reloadData]; 
} 
return self;} 

,然后我实现另一个类矿井下面的方法,我们称之为B:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

最后我alloc + init B并将实例传递给创建UIViewController的方法initWithNibName:bundle:tableDataSource:。所有视图都显示在模拟器中,但数据源方法似乎不被调用。 我做了一些与另一个控制器类似的工作,但它是一个UITableViewController,而TableView是控制器的视图。是否有可能是一个子视图,我必须设置数据源的另一种方法不同于initWithNib?

UPDATE: 通过将数据源分配的viewDidLoad:方法我能解决这个问题。在我看来,即使调用[self initWithNibName:nibNameOrNil bundle:nibBundleOrNil]的主视图的子视图后不能正常inited

回答

0

如更新和评论说,我通过改变在哪里设置委托/数据源,因为它是需要等待的tableView被分配和inited解决。这在我看来,作为一个子视图它被分配/晚inited不是类

+0

你可以发布您的viewDidLoad方法?我试图做同样的事情,你却在viewDidLoad方法你设置self.table.dataSource什么?在你的代码中,你可以将它设置为init方法中可用的dataSource – RyanG 2011-05-27 18:24:50

2

这个答案看一看,我认为这是类似于你在使用“B”作为外部数据源提出什么控制器。

Simple way to separate UITableview datasource and delegate from main UIViewController class?

+0

我读到的主视图和它里面太的链接。 我不想从IB通过(并让它istanziate我的数据源类),我只是想以编程方式做到这一点(和在帖子中说我已经做了另一个类似的情况)。 – rano 2010-07-30 15:25:22

+0

我似乎通过在'viewDidLoad:'方法中设置数据源来解决它。但我仍然不明白为什么它的工作原理为其他类 – rano 2010-07-30 16:52:26