Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITableView和UIButton重叠,不考虑单元格高度_Ios_Objective C_Uitableview_Uibutton - Fatal编程技术网

Ios UITableView和UIButton重叠,不考虑单元格高度

Ios UITableView和UIButton重叠,不考虑单元格高度,ios,objective-c,uitableview,uibutton,Ios,Objective C,Uitableview,Uibutton,我在tableView中有一个按钮,它的行为与我所希望的不一样 我已将按钮初始化放在tableView cellForRowAtIndexPath中的单元格==nil块中。当我将其移出该块时,按钮被多次绘制,所有其他按钮都在顶部,因此我无法移动它(除非设置错误) 我的按钮是一个简单的绿色勾号或红十字,并设置了一个选择器。tableView中的每一行高度根据其中的文本量而有所不同。但是,当我的按钮位于cell==nil部分时,它不考虑cell.frame.height。它重复使用表格视图第一次初始

我在tableView中有一个按钮,它的行为与我所希望的不一样

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

我的按钮是一个简单的绿色勾号或红十字,并设置了一个选择器。tableView中的每一行高度根据其中的文本量而有所不同。但是,当我的按钮位于cell==nil部分时,它不考虑cell.frame.height。它重复使用表格视图第一次初始化时的单元格高度

这是按钮的代码:

    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块内时,即使在上下滚动时,它也会输出全部内容。单元格外=nil块,它工作正常-与按钮相同(除了它的重画问题)


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

子类
UITableViewCell
,并在单元格的
layoutSubviews
方法中计算按钮的
frame

子类
UITableViewCell
并在单元格的
layoutSubviews
方法中计算按钮的
frame

子类
UITableViewCell
并在单元格的
layoutSubviews
方法中计算按钮的
frame

子类
UITableViewCell
并在单元格的
layoutSubviews
方法中计算按钮的
frame

我认为您需要将UITableViewCell子类化,并实现prepareforeuse方法。在prepareForReuse中,您将移除按钮。不是百分之百确定能解决你所描述的问题


子类化UITableViewCell还可以使计算按钮大小更容易。

我认为您需要子类化UITableViewCell并实现prepareForReuse方法。在prepareForReuse中,您将移除按钮。不是百分之百确定能解决你所描述的问题


子类化UITableViewCell还可以使计算按钮大小更容易。

我认为您需要子类化UITableViewCell并实现prepareForReuse方法。在prepareForReuse中,您将移除按钮。不是百分之百确定能解决你所描述的问题


子类化UITableViewCell还可以使计算按钮大小更容易。

我认为您需要子类化UITableViewCell并实现prepareForReuse方法。在prepareForReuse中,您将移除按钮。不是百分之百确定能解决你所描述的问题


子类化UITableViewCell还可以更容易地计算按钮大小。

我将结合Michal和Lev的答案

  • 子类UITableViewCell并使按钮成为属性
  • 在单元格自身的实例化过程中实例化按钮。这样,您将只添加一次按钮
  • 重写UITableViewCell子类的prepareForReuse方法,并根据需要仅更改按钮的外观
  • 覆盖UITableViewCell子类的layoutSubviews方法,并计算和设置单元格的新高度。(您正在这里实现自己的自定义固有大小。酷!)

  • 我会把Michal和Lev的答案结合起来

  • 子类UITableViewCell并使按钮成为属性
  • 在单元格自身的实例化过程中实例化按钮。这样,您将只添加一次按钮
  • 重写UITableViewCell子类的prepareForReuse方法,并根据需要仅更改按钮的外观
  • 覆盖UITableViewCell子类的layoutSubviews方法,并计算和设置单元格的新高度。(您正在这里实现自己的自定义固有大小。酷!)

  • 我会把Michal和Lev的答案结合起来

  • 子类UITableViewCell并使按钮成为属性
  • 在单元格自身的实例化过程中实例化按钮。这样,您将只添加一次按钮
  • 重写UITableViewCell子类的prepareForReuse方法,并根据需要仅更改按钮的外观
  • 覆盖UITableViewCell子类的layoutSubviews方法,并计算和设置单元格的新高度。(您正在这里实现自己的自定义固有大小。酷!)

  • 我会把Michal和Lev的答案结合起来

  • 子类UITableViewCell并使按钮成为属性
  • 在单元格自身的实例化过程中实例化按钮。这样,您将只添加一次按钮
  • 重写UITableViewCell子类的prepareForReuse方法,并根据需要仅更改按钮的外观
  • 覆盖UITableViewCell子类的layoutSubviews方法,并计算和设置单元格的新高度。(您正在这里实现自己的自定义固有大小。酷!)