我使用目标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
我已经成功使用了十多次此类,每次像现在这样犯一些愚蠢的错误。最后,我鼓起勇气,决定寻求帮助。
我似乎不了解本课程中哪些细微的事物,细微差别?
编辑:这是一个小程序的一部分,它的其他部分工作正常,但表不显示任何内容;建议进行一些重要的更改,但不能解决问题。
最佳答案
在不知道什么不起作用的情况下调试起来有点困难,但是我看到一些可以帮助您的事情。UITableViewController
有其自己的表视图,但是您似乎在笔尖中连接了另一个表视图。使用UITableViewController
表格视图,或创建自己的表格视图,不要两者都做。
在cellForRowAtIndexPath
中,您每次都在创建一个新单元格,而不是重复使用现有单元格。
可以在viewWillAppear
之前调用tableview的委托方法。您应该更早地创建数据源对象。我建议viewDidLoad:
。 (另一个原因,viewWillAppear
是一个不好的选择,因为它可以多次调用,并且最终可能无缘无故地创建和销毁许多数据源对象)
希望能有所帮助。
关于ios - UITableView的细微差别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41550051/