UIButton无法在UITableview中工作

时间:2016-07-15 20:11:18

标签: ios iphone uitableview uibutton

enter image description hereUITableviewcell - >在其中我有4个不同的UIView和3个视图有UIButtons。我想让UIButton可点击。这些按钮第一次是可点击的,但当我进入下一个屏幕并返回时,按钮不起作用。请告诉我如何实现这个?谢谢!

PHMyTripView * tripsView = [[PHMyTripView alloc] initWithFrame:CGRectMake(10,5,self.frame.size.width-20,cell.frame.size.height)];

                         tripsView.onBaggageClick = ^{
                             [weakSelf handleBaggagePurchaseTapped];
                         };

                         if ([data count]>0) {
                             [tripsView fillTripData:[data firstObject]];
                             [tripsView showAncillaries:self.predictiveManager.upcomingCDAirBookingInfo];
                         }
                         [cell bringSubviewToFront:tripsView.bagsButton];
                         [cell.viewPlaceHolder addSubview:tripsView];

5 个答案:

答案 0 :(得分:2)

发生这种情况是因为单元格是可重复使用的,如果你转到另一个屏幕,那么按钮可能会在UI或功能上陷入不同的单元格。

解决这个问题的方法是添加标签。您可以定义cell.tag = indexPath.row * 10左右。

然后在绘制按钮时,检查条件,如果是cell.tag == ?,则添加按钮。

答案 1 :(得分:0)

您应该在每个delaysContentTouches子视图上关闭UITableView,该子视图是UIScrollView类的实例。 子类UITableView并覆盖initWithFrame方法:

.h文件

@interface NoDelaysOnTouchTableView : UITableView

@end

和.m文件

#import "NoDelaysOnTouchTableView.h"

@implementation NoDelaysOnTouchTableView

- (id) initWithFrame: (CGRect) frame
{
    self = [super initWithFrame: frame];

    if (self) {
        for (id view in self.subviews) {
            if ([NSStringFromClass([view class]) isEqualToString: @"UITableViewWrapperView"]) {
                if ([view isKindOfClass: [UIScrollView class]]) {
                    // turn OFF delaysContentTouches in the hidden subview
                    UIScrollView* scroll = (UIScrollView*)view;
                    scroll.delaysContentTouches = NO;
                }
                break;
            }
        }
    }
    return self;
}

@end

下一步 - 使用此子类(创建NoDelaysOnTouchTableView的实例)可以立即按UIButton

答案 2 :(得分:0)

我认为原因可能是倍数。 你可以尝试:

  • 检查单元格中每个按钮的约束
  • 在cellForRow中你可以对addTarget执行:对于每个带有相对@selector的按钮,在这个方法中检查与按钮关联的对象(数据源)。
  • 不要在单元格中使用addSubView,而是使用Xib(或在tableView中的故事板中定义单元格),以便设置约束。

我希望,我帮助了你。

答案 3 :(得分:0)

感谢大家的回复,但他们不能解决我的问题。 这是答案。由于UITableview在返回到屏幕时正在重新加载。框架错误放置,因此按钮无法点击。

使用这一行代码,工作正常。

self.tripsView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

答案 4 :(得分:0)

不是专门针对此问题,但对于某些人来说可能是这样。尝试在单元格的contentView中添加子视图。 代替addSubview(textField)使用contentView.addSubview(textField)