2012-08-14 143 views
1

當我按下編輯按鈕時,我得到了項目左邊的圓形刪除圖標。當我按下單元格中的刪除圖標時,它會「變成」,但刪除按鈕不顯示,所以我的commitEditingStyle永遠不會被調用,因爲我沒有刪除按鈕。UITableView刪除按鈕不出現

只是爲了好玩......我將單元格更改爲插入我得到加號圖標...我按下它並調用了commitEditingStyle。

我不明白爲什麼我沒有得到刪除按鈕。

我有一個UIViewController,我在彈出窗口中顯示。我加入一個UITableView喜歡這樣......

audioTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 44, self.view.frame.size.width, 303)]; 
audioTable.delegate = self; 
audioTable.dataSource = self; 
[self.view addSubview:audioTable]; 

我使用的是自定義單元格帶有兩個標籤來顯示文本。

這裏是自定義單元格initWithFrame ...

primaryLabel = [[UILabel alloc]initWithFrame:CGRectMake(25 ,8, 275, 25)]; 
primaryLabel.font = [UIFont systemFontOfSize:14]; 

secondaryLabel = [[UILabel alloc]initWithFrame:CGRectMake(25 ,28, 275, 25)]; 
secondaryLabel.font = [UIFont systemFontOfSize:12]; 

[self.contentView addSubview:primaryLabel]; 
[self.contentView addSubview:secondaryLabel]; 

[self.contentView sendSubviewToBack:primaryLabel]; 
[self.contentView sendSubviewToBack:secondaryLabel]; 

我被掛在編輯調用視圖控制器工具欄中有一個刪除按鈕。以下是我在編輯調用,因爲我得到在細胞中刪除符號這是越來越細叫我做什麼......

if([self.audioTable isEditing]) { 
    [button setTitle:@"Edit"]; 
    [super setEditing:NO animated:NO]; 
    [self.audioTable setEditing:NO animated:YES]; 
} else { 
    [button setTitle:@"Done"]; 
    [super setEditing:YES animated:NO]; 
    [self.audioTable setEditing:YES animated:YES]; 
} 

我已實現了以下...

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewCellEditingStyleDelete; 
} 

-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    //i don't think i need to implement this really 
    return YES; 
} 

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     //do delete stuff 
    } 
} 

就像我說的一切正常工作,按下按鈕,所有工作......只是沒有刪除按鈕。

+0

嗯,奇怪。這一切似乎都很好。你確定你不添加一些隱藏刪除按鈕的隨機視圖。 – 2012-08-14 16:34:29

+0

感謝您的評論。根本沒有添加任何其他視圖...只是一個具有2個標籤的自定義單元格。一個自定義的單元格可以與此有關嗎? – digthewells 2012-08-14 17:00:46

+0

這兩個標籤是textLabel和detailTextLabel還是使用addSubview添加的? – 2012-08-14 17:01:36

回答

3

我必須通過使用不同的機制來解決此問題。我做了一個測試,當我使用UITableViewController它工作得很好。當我將UITableView添加到UIViewController,執行與UITableViewController相同的操作時,它不起作用。我不知道我錯過了什麼,但是使用UIViewController而不是UITableViewController導致刪除按鈕不出現。

+0

我遇到了同樣的問題,我解決了它,如你所說。 – Zhou 2013-02-02 09:11:15

+0

我有同樣的問題,但我不能使用'UITableViewController' – RoLYroLLs 2016-07-01 17:22:46

0

問題是,您使用addSubview添加標籤:添加到單元格的內容視圖,並且當它們添加爲最後時,它們隱藏了單元格的其他部分。通過撥打電話將其推入背景:

[cell.contentView sendSubviewToBack:label]; 
+0

我已經將這添加到自定義單元格的initWithFrame調用後,addsubview ...不起作用。我嘗試了自定義單元格上的layoutSubviews並沒有工作。我也嘗試過cellForRowAtIndexPath和我的customizeCell調用,我使用這些調用來將核心數據中的數據放入單元中,但它們都沒有什麼區別......你說的是有道理的......我做錯了什麼? – digthewells 2012-08-14 17:22:58

+0

@digthewells抱歉,但我沒有更多的想法。嘗試使用不同的方法重寫您的代碼。 – 2012-08-14 17:31:30

4

我遇到了同樣的問題。問題在於我的tableView的框架在popover內沒有正確調整大小。實際上,正在顯示刪除按鈕,但它位於彈出框的邊界之外,因此無法看到。

我通過確保tableView適當調整大小來解決此問題。對我來說,這意味着設置的tableView的autoresizingMask這樣的:

self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

其他人能夠通過切換到UITableViewController解決這個問題的原因是因爲它的tableView適當調整。

+0

這不適用於我 – RoLYroLLs 2016-07-01 17:25:26

0

記得設置刪除按鈕

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewCellEditingStyleDelete; 
} 
+0

謝謝你的提示......這很好,可以解決問題!我還沒有測試過,但當我有另一個需要這樣做時,我一定會給它一個鏡頭。謝謝! – digthewells 2013-11-20 10:53:38

+0

這不適合我。仍然在尋找解決方案=( – RoLYroLLs 2016-07-01 17:22:15

2

的風格,我知道您使用UITableViewController固定的,但我不能在我的情況。

環顧四周,我剛剛找到答案here,你需要更多管道工來完成工作。幸運的是它非常簡單。添加到您的UIViewController包含對您的參考UITableView

// objc 
- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 
    [tableView setEditing:editing animated:animated]; 
} 

// swift 
override func setEditing(editing: Bool, animated: Bool) { 
    super.setEditing(editing, animated: animated) 
    self.tableView.setEditing(editing, animated: animated) 
} 
+1

感謝您的回答。回想起來,我相信這將解決問題。我能夠使用UITableViewController,所以我做到了,並繼續前進。希望這將有助於未來的人。 – digthewells 2016-07-20 17:43:12

+0

我已經嘗試過這樣做,但是做得不好(在調用super之前調用self.tableView.setEditing)並且遇到了問題。交換這些調用的順序爲我修復了它,謝謝! – CoBrA2168 2017-03-03 13:17:19

相關問題