【发布时间】:2011-03-23 05:39:53
【问题描述】:
在我的 iPhone 应用程序中,我有一个 UIViewController,它有一个 UITableView 和另一个 UIView,在它的 xib 文件中,xib 的视图包含 UITableView 和另一个 UIView。两个视图都作为 IBOutlets 链接到 xib 文件中的适当视图。 当我想以编程方式为 UITableView 设置数据源时,我在 UIViewController 中创建了一个这样的方法:
- (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 并将实例传递给方法 initWithNibName:bundle:tableDataSource: 创建 UIViewController。所有视图都出现在模拟器中,但数据源方法似乎没有被调用。
我对另一个控制器做了类似的事情并且可以工作,但它是一个 UITableViewController 而 TableView 是控制器的视图。是否有可能作为一个子视图,我必须在不同于 initWithNib 的另一种方法中设置数据源?
更新:
通过将数据源分配放在viewDidLoad: 方法中,我能够解决它。在我看来,即使在调用 [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil] 之后,主视图的子视图也没有正确启动
【问题讨论】:
标签: iphone uitableview datasource subview