2012-11-05 163 views
0

我有一個UITableView,每個單元格前面都有一個圖像按鈕,我想調整該UIButton的座標。寫入cellForRow相關的代碼如下:更改表格視圖單元格中的圖像按鈕的位置

UIImage *image = [UIImage imageNamed "unchecked.png"]; 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
CGRect frame1 = CGRectMake(0.0,0.0, image.size.width, image.size.height);** //changing the coordinates here doesn't have any effect on the position of the image button. 
button.frame = frame1; // match the button's size with the image size 
[button setBackgroundImage:image forState:UIControlStateNormal]; // set the button's target to this table view controller so we can interpret touch events and map that to a NSIndexSet [button addTarget :self action: @selector(checkButtonTapped:event) forControlEvents:UIControlEventTouchUpInside]; 
+0

那不是相關的代碼相關的代碼是你是否正確處理tableview單元格緩存。 –

+1

編寫完整的cellForRowAtIndexPath方法 –

+0

您要添加按鈕的位置? – DivineDesert

回答

0

UITableViewCell的缺省佈局是[imageView] [textLabel] [accessoryView]。你不能改變這一點。

如果您想要在您的UITableViewCell中任意定位圖像,則必須將UIImageView添加到單元的contentView

+0

可以通過繼承UITableViewCell並覆蓋其layoutSubviews方法來更改默認佈局。 –

0

設置視圖的框架設置其相對於其超級視圖的位置,因此您需要在設置其框架之前將按鈕設置爲單元格的子視圖。

但是,這不應該在cellForRowAtIndexPath中完成,因爲這意味着每當表視圖「重複使用」一個單元時,您都會分配一個新按鈕。 您應該創建按鈕,並在初始化表格視圖單元格時設置其框架,以便每個單元格只創建一個按鈕。

所以你想要的是一個UITableViewCell子類的init方法看起來像這樣。

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     UIImage *image = [UIImage imageNamed:@"backgroundImage.png"]; 
     [self addSubview:button]; 
     [button setFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; 
    } 
    return self; 
} 
相關問題