gpt4 book ai didi

ios - UITableView 和 UIButton 重叠而不考虑单元格高度

转载 作者:行者123 更新时间:2023-11-28 19:58:46 25 4
gpt4 key购买 nike

我在 tableView 中有一个按钮,它的行为不符合我的意愿。

我已将我的按钮初始化放在 tableView cellForRowAtIndexPath 中的 cell==nil block 中。当我将它移出此 block 时,该按钮会多次绘制,所有其他按钮都在顶部,因此我无法移动它(除非设置错误)。

我的按钮是一个简单的绿色对勾或红叉,并设置了一个选择器。 tableView 中的每一行高度都不同,具体取决于其中的文本量。然而,我的按钮在 cell==nil 部分时,没有考虑 cell.frame.height。它重复使用第一次初始化 tableView 时单元格的高度。

这是按钮的代码:

    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button =[[UIButton alloc]init];

float framePos_x = cell.frame.size.width/1.30;
float framePos_y = cell.frame.size.height - 55;

NSLog(@"%f",cell.frame.size.height);

button.frame = CGRectMake(framePos_x, framePos_y, 35, 35);


buttonImage = [UIImage imageNamed:@"Notification_Accepted"];
buttonImage_Pressed = [UIImage imageNamed:@"Notification_Reject"];

[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button setImage:buttonImage_Pressed forState:UIControlStateSelected];

button.tag = [UserID intValue];
[button addTarget:self action:@selector(ResponseFlagButton:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];

我的 NSLog 的输出是:

2014-08-03 17:03:49.724 TableApp[5540:60b] 120.000000
2014-08-03 17:03:49.774 TableApp[5540:60b] 100.000000
2014-08-03 17:03:49.853 TableApp[5540:60b] 100.000000
2014-08-03 17:03:49.936 TableApp[5540:60b] 100.000000
2014-08-03 17:03:51.287 TableApp[5540:60b] 100.000000

当此日志位于 cell=nil block 内时,它就输出所有内容,即使上下滚动也是如此。在 cell=nil block 之外,它工作正常 - 与按钮相同(除了它的重绘问题)。

如果不将按钮放在旧按钮的顶部,我将如何让按钮每次都被绘制一次。以及考虑可变单元格高度?

最佳答案

我会结合 Michal 和 Lev 的答案。

  1. 子类化 UITableViewCell 并使按钮成为一个属性。
  2. 在单元格自身实例化期间实例化按钮。这样您将只添加一次按钮。
  3. 覆盖 UITableViewCell 子类的 prepareForReuse 方法,并根据需要仅更改按钮的外观。
  4. 重写 UITableViewCell 子类的 layoutSubviews 方法,计算并设置单元格的新高度。 (您在这里实现了自己的自定义固有尺寸。酷!)

关于ios - UITableView 和 UIButton 重叠而不考虑单元格高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25106541/

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