2012-05-12 43 views
1

在我cellForRowAtIndex我初始化按鈕(它被顯示在每一個細胞中實現代碼如下):按鈕應該點擊後改變形象,但(隨機)改變其他按鈕的圖像太

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button addTarget:self 
      action:@selector(customActionPressed:) 
forControlEvents:UIControlEventTouchDown]; 
[button setTitle:@"" forState:UIControlStateNormal]; 
button.frame = CGRectMake(0.0f,cell.frame.size.height -15, 160.0f, 15.0f); 
UIImage *buttonImage = [UIImage imageNamed:@"Image1.png"]; 
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
[button.titleLabel setFont:[UIFont fontWithName:@"Arial" size:13.0]]; 
button.contentEdgeInsets = UIEdgeInsetsMake(1, 60, 0, 0); 
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];  
[cell addSubview:button]; 
button.autoresizingMask = UIViewAutoresizingFlexibleTopMargin; 

它一個正常的圖像,如果用戶點擊按鈕,圖像會改變。我也從XML獲取button.title的內容。因此,我告訴它從網絡上獲得正確的標題。這可以正常工作,但有時(並非全部),也是隨機更改下一個單元格的按鈕,或單元格向下三行。我不知道爲什麼,用斷點/調試器運行時找不到任何東西。

-(void)customActionPressed :(id)sender 
{ 
    UITableViewCell *owningCell = (UITableViewCell*)[sender superview]; 

    NSIndexPath *pathToCell = [self.tableView indexPathForCell:owningCell]; 

    UIImage *buttonImage = [UIImage imageNamed:@"image2.png"]; 

    [self doXMLParsing]; 
    [sender setBackgroundImage:buttonImage forState:UIControlStateNormal]; 
    NSString *TableText = [[NSString alloc] initWithFormat:@"%@", [[tabelle objectAtIndex:pathToCell.row] pressed1]]; 
    [sender setTitle:TableText forState:UIControlStateNormal]; 
    ((UIButton *)sender).enabled = NO; 
} 

所以,也許有人可以看到我錯了什麼地方。如果你需要更多的代碼,就這麼說吧。

回答

1
[button addTarget:self action:@selector(customActionPressed:) 
    forControlEvents:UIControlEventTouchDown]; 

嘗試使用UIControlEventTouchUpInside而不是UIControlEventTouchDown。

您還創建了自定義單元格,然後您可以在類的子類UITableViewCell中爲您的按鈕創建一個屬性,並通過該屬性更改按鈕的圖像。

另請勿更改按鈕操作中的圖像。您可以通過tableview的didSelectRowAtIndexPath委託中的cell.yourbuttonName訪問按鈕,然後更改圖像。

+0

你能否進一步解釋第二部分?我想我並不是真正的沉沒。 – Blade

+0

當你創建一個customcell時,你可以通過[cell.nameofyourbutton setImage:[UIIMAGE imageNamed:@「」]]來訪問它。如果您的單元格中有多個項目,最好定製它,因爲更容易進行更改並以此方式訪問 –

+0

噢,好的,是的,比我理解的要好。但即使它是appdelegate,它也不知道如何處理「cell.mybutton」。 – Blade