[英]UIButton not working in UITableview
有
UITableviewcell
--> 其中我有 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];
發生這種情況是因為這些單元格是可重復使用的,如果您轉到另一個屏幕,該按鈕可能會在 UI 或功能上混亂到不同的單元格中。
解決這個問題的方法是添加標簽。 您可以定義 cell.tag = indexPath.row * 10 左右。
然后在繪制按鈕時,檢查條件,如果 cell.tag == ?,則添加您的按鈕。
謝謝大家的回復,但他們在我的情況下不起作用。 這是答案。 由於 UITableview 在返回屏幕時正在重新加載。框架被錯誤放置,因此按鈕無法點擊。
使用了這一行代碼,效果很好。
self.tripsView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
您應該關閉每個UITableView
子視圖上的delaysContentTouches
,它是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
。
我認為原因是多重的。 你可以試試:
我希望,我已經幫助了你。
不是專門針對這個問題,但對於某些人來說可能是這種情況。嘗試在單元格的contentView
中添加子視圖。 而不是addSubview(textField)
使用contentView.addSubview(textField)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.