- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个小提醒应用程序。当用户尝试设置新提醒时,将显示一个 UITableView
,其中不同的部分代表用户编辑的提醒的不同方面。其中一个部分我想要动态行,以便用户可以单击第一个单元格中的加号,另一个单元格将出现在它下面。一旦发生这种情况,红色的 x 符号将替换第一个单元格中的加号,因此用户也可以删除该单元格。我遇到的问题是,当删除一个单元格时,我正在调用 -deleteAtIndexPaths:withRowAnimation:
但似乎该单元格只是被放入可重用队列中,实际上并没有被释放。我知道这一点是因为当一个单元格被删除但用户再次单击加号时,该单元格中的旧信息(包括红色 x 符号)位于来自 -dequeReusableCellWIthIdentifier:
的新单元格中.当我想让它解除分配时,我想不出一种方法来阻止它排队。这是我的 tableView:cellForRowAtIndexPath: 与我正在谈论的单元格有关。
static NSString *identifier2 = @"addTime";
ReminderAddTimeTableViewCell *cell2 = [self.tableView dequeueReusableCellWithIdentifier:identifier2];
if (cell2 == nil) {
NSArray *cellnib = [[NSBundle mainBundle] loadNibNamed:@"ReminderAddTimeTableViewCell" owner:self options:nil];
cell2 = (ReminderAddTimeTableViewCell *)[cellnib objectAtIndex:0];
[cell2.extra addTarget:self action:@selector(addTimeCell:) forControlEvents:UIControlEventTouchUpInside];
cell2.extra.tag = indexPath.row;
cell2.selectionStyle = UITableViewCellSelectionStyleNone;
}
return cell2;
这里是通过 IBAction
方法对应的添加和删除单元格:
-(IBAction)addTimeCell:(UIButton*)sender{
timeCellCount ++;
NSIndexPath *path = [NSIndexPath indexPathForRow:sender.tag+1 inSection:1];
NSArray *array = [NSArray arrayWithObjects:path,nil];
[self.tableView insertRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationRight];
[sender setImage:[UIImage imageNamed:@"red-x.png"] forState:UIControlStateNormal];
[sender removeTarget:self action:@selector(addTimeCell:) forControlEvents:UIControlEventTouchUpInside];
[sender addTarget:self action:@selector(removeTimeCell:) forControlEvents:UIControlEventTouchUpInside];}
-(IBAction)removeTimeCell:(UIButton*)sender{
for(int i = sender.tag+1; i <= timeCellCount; i++){
((ReminderAddTimeTableViewCell*)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:1]]).extra.tag --;
}
timeCellCount --;
[sender setImage:[UIImage imageNamed:@"green-plus.png"] forState:UIControlStateNormal];
[sender removeTarget:self action:@selector(removeTimeCell:) forControlEvents:UIControlEventTouchUpInside];
[sender addTarget:self action:@selector(addTimeCell:) forControlEvents:UIControlEventTouchUpInside];
NSIndexPath *path = [NSIndexPath indexPathForRow:sender.tag inSection:1];
NSArray *array = [NSArray arrayWithObjects:path,nil];
[self.tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationRight];
}
我已经标记了按钮,所以我知道我正在处理的是哪个单元格,并设置了一个名为 timeCellCount 的全局变量来保存单元格总数。在此先感谢您的帮助!
最佳答案
您需要重置单元格,而不是删除它。通过覆盖 prepareForReuse
方法更新它的 View 。
Prepares a reusable cell for reuse by the table view's delegate.
- (void)prepareForReuse
If a UITableViewCell object is reusable—that is, it has a reuse identifier—this method is invoked just before the object is returned from the UITableView method dequeueReusableCellWithIdentifier:. For performance reasons, you should only reset attributes of the cell that are not related to content, for example, alpha, editing, and selection state. The table view's delegate in tableView:cellForRowAtIndexPath: should always reset all content when reusing a cell. If the cell object does not have an associated reuse identifier, this method is not called. If you override this method, you must be sure to invoke the superclass implementation.
Availability Available in iOS 2.0 and later.
关于ios - dequeReusableCellWIthIdentifier : loads cell that was previously deleted by the user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312674/
export class UserListComponent implements OnInit{ users; constructor(private userService: UserS
我最近在我的系统中遇到了 Java 语言环境的问题,我试图用这个配置运行一个项目: -Duser.language=pt_BR -Duser.country=BR 谷歌搜索后,我找到了this sit
1 当我希望出现注册错误时,我的代码出现问题:管理器不可用; 'auth.User' 已替换为 'users.User' ,我尝试解决其他问题,与 Manager 不可用相同; 'auth.User'
Loopback 非常酷,但这是我迄今为止遇到的一个缺点,我真的不确定如何解决它。内置用户模型在我的 MongoDB 数据库中生成一个名为“User”的集合,当我尝试根据 Loopback.js 自己
我在 aws cognito 中有以下用户组。行政成员付费成员(member) 我想在所有用户注册我的应用程序时将所有用户默认分配到 Member 用户组,这样我就可以为该用户组分配不同的 IAM A
blogsIndex.blade.php @extends('layouts.default') @section('details')
我正在尝试在Rails 3开发环境中使用sqlite3而不是MySQL,但是遇到了问题。尝试执行rake db:migrate时,我得到: SQLite3::SQLException: no such
尝试使用 构建 API Phoenix v1.3 按照本教程: https://dreamconception.com/tech/phoenix-full-fledged-api-in-five-mi
我正在使用通过模板 cookie-cutter 创建的 Django。当我尝试在本地使用 docker 运行项目时,出现以下错误。 FATAL: password authentication fai
我正在尝试使用 node.js/adonis 创建新用户 我创建了这两个函数: const User = use("App/Models/User") async store ({ request,
我想安排一些事情,例如 GET 请求 http://example.com/user/foo@bar.com 内部调用脚本 /var/www/example.com/rest/user/GET.php
我是一名具有可用性工程背景的软件开发人员。当我在研究生院学习可用性工程时,其中一位教授有一句口头禅:“你不是用户”。我们的想法是,我们需要将 UI 设计基于实际的用户研究,而不是我们自己关于 UI 应
您好,我正在制作一个使用互联网发送消息的消息传递应用程序。我需要从用户 a 向用户 b 发出通知。 我使用这段代码: if (toUser!= nil){ parseMessage[@
在 ruby/ror 中你可以这样做: user = User.new(params[:user]) 它使用发布表单中的值填充新对象。 使用 django/python 可以完成类似的事情吗? 最
每当我编辑用户的角色时,用户都需要注销并重新登录以查看更改。提升用户时没有问题,因为他们在再次登录之前不会看到额外的权限。但是,当降级发生时,用户仍将保留其现有角色,这会带来安全风险。想象一下,撤销一
我的核心数据有线问题。使用 iOS 10 中的 Swift3,每次使用 获取或存储数据时,我都会获得托管对象上下文 func getContext () -> NSManagedObjectCont
我发现当我使用 users_path(user) 时它返回 /users.id 其中 id 是用户的 ID 但我希望它返回 /用户/ID。我的配置 routes.rb 如下所示。 # config/r
我的应用程序在我的测试设备上正常运行(当我通过 ADT 安装它时,当我通过导出的 APK 文件安装它时)但它在 Play Store 测试设备上失败并出现以下错误: Permission Denial
创建模型的第一个条目会抛出错误 我执行了以下命令进行迁移 manage.py makemigrations manage.py migrate 在我执行这些命令以在数据库中创建第一个“数据”之后,一切
我正在尝试实现一个 getter,但它在下面代码 fragment 的最后一行向我显示了这个错误。 代码是—— class AuthRepository extends BaseAuthReposit
我是一名优秀的程序员,十分优秀!