我的故事板中有问题。它工作正常但是当我尝试更改UITableView的内容属性时导致以下错误
断言失败 - [UITableView dequeueReusableCellWithIdentifier:forIndexPath:],/ SourceCache / UIKit / UIKit-2903.23 / UITableView.m 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法使用标识符Cell对单元格进行出列 - 必须为标识符注册一个nib或类或在故事板中连接原型单元'
我想设计一个带有静态单元格的分组表格视图。提前谢谢
代码
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
return cell;
}
答案 0 :(得分:7)
如果使用静态单元格,只需注释所有UITableViewDatasourceDelegate方法。请注释以下代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
return cell;
}
希望这会对你有帮助!
答案 1 :(得分:7)
而不是使用:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// - >这在使用原型单元格时使用(例如)Dynamic TableView
使用:强>
UITableViewCell *cell = [super tableView:tableView
cellForRowAtIndexPath:indexPath];
// - >由于您选择了Static TableCells,因此您无需重复使用,而是使用您在nib中创建的单元格
答案 2 :(得分:1)
我遇到了同样的问题,我想我找到了解决问题的方法。
希望它有所帮助。
答案 3 :(得分:0)
使用storyboard时,必须在storyboard中注册tableview单元格。这意味着必须将单元格添加到表格中,并且必须设置其标识符。此标识符应在cellForRowAtIndexpath
编辑
如果是静态细胞,需要在笔尖中创建每个关节细胞,并通过代码或笔尖填充内容
阅读本文
答案 4 :(得分:0)
答案 5 :(得分:0)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [YourArr count];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 44;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = [NSString stringWithFormat:@"cell %d",indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell = nil;
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
return cell;
}
答案 6 :(得分:0)
在cellForRowAtIndexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
}
else
{
UIView *subview;
while ((subview= [[[cell contentView]subviews]lastObject])!=nil)
[subview removeFromSuperview];
}