我有一个名为BNRItemViewcontroller
在实施中:
- (instancetype)init{
self = [super initWithStyle:UITableViewStylePlain];
if (self) {
for (int i = 0; i < 5; i++) {
[[BNRItemStore sharedStore]createItem];
}
}
return self;
}
- (instancetype)initWithStyle:(UITableViewStyle)style{
return [self init];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[[BNRItemStore sharedStore] allItems] count];
}
我在 cellForRowAtIndexPath:方法中添加了一个断点,但它没有进入该方法。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell" forIndexPath:indexPath];
NSArray *items = [[BNRItemStore sharedStore] allItems];
BNRItem *item = items[indexPath.row];
cell.textLabel.text = [item description];
return cell;
}
答案 0 :(得分:2)
Try this in cellForRowAtIndexPath to fix the crash issue and also check that the delegate properly set or not
static NSString *CellIdentifier = @"yourCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
谢谢
答案 1 :(得分:0)
请检查您是否已正确连接&#34;数据源&#34;和#34;代表&#34;通过代码或故事板,查看控制器的表视图。
答案 2 :(得分:0)
确保.horizontal {
display: flex;
justify-content: center;
}
.vertical {
display: flex;
flex-direction: column;
justify-content: center;
}
不返回0;
numberOfRowsInSection
修改强>
在- (instancetype)init{
self = [super initWithStyle:UITableViewStylePlain];
if (self) {
self.tableView.dataSource = self;
self.tableView.delegate = self;
for (int i = 0; i < 5; i++) {
[[BNRItemStore sharedStore]createItem];
}
}
return self;
}
方法中写下这一行。
init
答案 3 :(得分:0)
请确保您已按照以下步骤操作:
第1步:符合UITableViewDataSourceDelegate
和UITableViewDelegate
第2步:设置self.tableView.delegate = self
和self.tableView.datasource = self
答案 4 :(得分:0)
请确认
在BNRItemViewcontroller
中添加协议,如下所示:@interface BNRItemViewcontroller() <UITableViewDelegate,UITableViewDataSource>
如果您使用Storyboard或xib,则应确认dataSource&amp;委托Storyboard / xib的出口或写self.tableview.dataSource = self
&amp;而是self.tableview.delegate = self
。
答案 5 :(得分:0)
有两种方式
1.请检查您是否已正确连接&#34;数据源&#34;和#34;代表&#34; tableview的 2. self.tableView.delegate = self&amp; self.tableView.datasource = self
答案 6 :(得分:0)
There can be seven reasons:
Like in accepted answer
Controller needs to conform to UITableViewDataSourceDelegate
and UITableViewDelegate
You must assign delegates self.tableView.delegate = self
and self.tableView.datasource = self
Futhermore:
numberOfSectionsInTableView
must return number > 0
(1
if you want to have one main section)
numberOfRowsInSection
must return number > 0
UITableView
needs different frame than CGRectZero
. You should't create UITableView in that way: self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
heightForRowAtIndexPath
must return number > 0
Some other controller (in inheritance) can take delegate methods. Only if you have one tableView for more than one controller.