2014-04-09 119 views
0

在編輯模式下,除了編輯附件之外,我希望單元顯示一個uibutton。當tableView進入編輯模式時,按鈕顯示正常,工作正常。但它永遠不會被刪除。除了下面的代碼之外,我試過說myButton.hidden = TRUE。這是我在我的自定義tableViewCell類我無法從自定義UITableViewCell中刪除自定義UIButton

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 

    self.trashButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    self.trashButton.frame = CGRectMake(337, 17, 27, 30); 
    [self.trashButton setBackgroundImage:[UIImage imageNamed:@"trash.png"] forState:UIControlStateNormal]; 

    if (editing) { 
     [self addSubview:self.trashButton]; 
    } else { 

     [self.trashButton removeFromSuperview]; 
    } 
} 
+1

爲什麼你在'if(編輯)'語句之前分配/初始化你的按鈕? – klcjr89

+1

謝謝你指出那個隊伍。其實也解決了這個問題。 –

回答

1

正如我在我的評論中提到的上方,這樣做可能更好:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 

    if (self.trashButton) 
    { 
     [self.trashButton removeFromSuperview]; 
     self.trashButton = nil; 
    } 
    else 
    { 
     self.trashButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     self.trashButton.frame = CGRectMake(337, 17, 27, 30); 
     [self.trashButton setBackgroundImage:[UIImage imageNamed:@"trash.png"] forState:UIControlStateNormal]; 

     [self addSubview:self.trashButton]; 
    } 
} 
+1

別忘了:'self.trashButton = nil;'(參見編輯答案) – klcjr89

1

您每次調用setEditing方法時都重新創建UIButton。當你調用removeFromSuperview時,被刪除的按鈕就是你剛纔創建的那幾行,而不是添加到你的UITableViewCell中的那個。

解決方法:請在UIButton的類屬性,在initWithFrame或awakeFromNib初始化(如果使用的故事板),然後將其隱藏/顯示它時,setEditing被稱爲

+1

忘了提及:初始化UIButton後,將它添加到視圖並隱藏它。然後在setEditing中隱藏/取消隱藏它,但不要使用addSubview或removeFromSuperview。 –