使用以下代码,当uitableView中没有数据显示时,我能够显示文本消息:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
if ([appDelegate.myDataArray count] == 0)
{
return 3;
}
return [appDelegate.myDataArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString* myCellIdentifier = @"MyCell";
myAppDelegate *appDelegate = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
if ([appDelegate.myDataArray count] == 0)
{
if (indexPath.row == 2)
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myCellIdentifier]; // only reuse this type of cell here
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myCellIdentifier] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
cell.textLabel.text = (@"No Records Found");
return cell;
}
else
{
// return a blank row for spacing
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:myCellIdentifier]; // only reuse this type of cell here
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myCellIdentifier] autorelease];
}
cell.textLabel.text = (@"");
return cell;
}
} ........
我的问题是,当我使用该方法删除表的记录时,我想要有这种行为:
- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
目前,当我删除最后一条记录时,结果是崩溃: “...更新后的现有部分中包含的行数(3)必须等于更新前该部分中包含的行数(1)......”
有关如何将文本显示3行(如上所示)并且在删除后删除最后一条记录后没有崩溃的任何想法?
感谢。
答案 0 :(得分:0)
虽然我不会使用相同的方法来实现“无结果”反馈,但我认为您的错误表示在删除最后一个“真实”行时转换中存在问题。
修复它的方法是告诉表在删除最后一行时插入了3行。那个或强制重新加载表格视图[self.tableView reloadData]
,以确保它不会与过渡混淆。