gpt4 book ai didi

ios - 删除最后一行后如何重新加载自定义表格 View 单元格?

转载 作者:行者123 更新时间:2023-11-28 21:41:56 24 4
gpt4 key购买 nike

我有一个 UITableView,其中有一个简单的数组作为数据源。我为一个特殊的 UITableViewCell 设计了一个自定义 Nib ,它在数组为空时(即应用程序首次启动时)显示。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if ([self.wallet count] == 0)
return 1;
else return [self.wallet count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// If there isn't any coupon yet, then show the custom "No Coupon Yet" cell
if ([self.wallet count] == 0)
return [tableView dequeueReusableCellWithIdentifier:@"NoCouponCell" forIndexPath:indexPath];
else {
CouponCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CouponCell" forIndexPath:indexPath];
Coupon *coupon = [self.wallet objectAtIndex:indexPath.row];

[cell configureForCoupon:coupon];
return cell;
}
}

因为我想添加滑动删除功能,所以我为 View Controller 提供了以下方法。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
[self.wallet removeObjectAtIndex:indexPath.row];
// Creates a new, temporary array holding just the one index-path item
NSMutableArray *tmp = [[NSMutableArray alloc] initWithObjects:indexPath, nil];
// Tells the table view to delete the row with a nice animation
[tableView deleteRowsAtIndexPaths:tmp withRowAnimation:UITableViewRowAnimationAutomatic];
}

但是,当 TableView 只有一行并且我尝试将其删除时,我的应用程序崩溃了。为什么?

编辑:调试信息表明引发了 NSInternalInconsistencyException

最佳答案

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if (editingStyle == UITableViewCellEditingStyleDelete)
{
// Delete the row from the data source
[self.wallet removeObjectAtIndex:indexPath.row];

[tableView reloadData]; // reload your table to see updates

// or if you what some animation use|

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath]
withRowAnimation:UITableViewRowAnimationAutomatic];

...


这是对您的 cellForRowAtIndexPath 的修复:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

CouponCell *cell = [tableView dequeueReusableCellWithIdentifier:[self.wallet count] == 0 ? @"NoCouponCell" : @"CouponCell" forIndexPath:indexPath];

if ([self.wallet count] > 0)
{
Coupon *coupon = [self.wallet objectAtIndex:indexPath.row];

[cell configureForCoupon:coupon];
}
return cell;
}

关于ios - 删除最后一行后如何重新加载自定义表格 View 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31694143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com