我已经使用了几个月的目标c,使用不同的基础课程,并且通常使用该语言。
根据我自己的经验,没有什么比UITableView更令人困惑;下面是一些没有太大作用的代码。
//the header file
@interface SLDataBankListTableViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end
//implementation
@interface SLDataBankListTableViewController ()
@property (strong, nonatomic) SLDataSourceObject* dataSource;
@end
@implementation SLDataBankListTableViewController
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:YES];
_dataSource = [[SLDataSourceObject alloc] init];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return _dataSource.dataBankNames.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"reuse"];
cell.textLabel.text = [_dataSource.dataBankNames objectAtIndex:indexPath.row];
return cell;
}
@end
我已经成功地使用了这个类十几次,每次我像现在一样犯了一些愚蠢的错误。最后,我鼓起勇气,决定寻求帮助。
这门课程的细微之处,细微差别是什么我似乎无法掌握?
编辑:这是一个小程序的一部分,它的其他部分工作正常,但表没有显示任何内容;已经建议一些重要的但没有解决问题的变化。
答案 0 :(得分:1)
如果没有知道什么不起作用,调试有点困难,但我看到一些可能会帮助你的东西。
UITableViewController
有自己的tableview,但你似乎在一个nib中连接了另一个tableview。要么使用UITableViewController
表格查看,要么创建自己的表格,不要同时使用。{/ li>
cellForRowAtIndexPath
中,您每次都在创建一个新单元格,而不是重复使用您拥有的单元格。 viewWillAppear
之前调用tableview的委托方法。您应该先创建数据源对象。我建议viewDidLoad:
。 (另一个原因viewWillAppear
是一个糟糕的选择,它可以被多次调用,并且你可以无缘无故地创建和销毁许多数据源对象)
希望有所帮助。答案 1 :(得分:1)
关于表视图要记住的重要一点是,它是用户与对象数组交互的一种方式。数组由数据源表示,数据源方法描述视图需要知道的内容:
numberOfRowsInSection:
)cellForRowAtIndexPath:
)要回答后一个问题,数据源必须回答视图。该视图的工作 - 就像任何视图一样 - 是为用户表示一个对象。在行中,表格视图使用UITableViewCell
。
数据源阵列可以任意大,因此直接将UITableViewCells映射到其元素可能会在内存方面造成任意代价。表视图重用单元格,而不是为数组中的每个对象创建一个单元格。
当一个单元格从顶部滚动时,&#34; new&#34;出现在底部的新单元并不是新的,它是旧单元传回数据源以便为新行重新配置。为实现此目的,您的数据源不会像@JonRose正确指出的那样分配新的单元格,而是使用dequeueReusableCellWithIdentifier
向表格视图询问重用的单元格。