2014-07-25 65 views
0

我想阻止自定義UITableViewCell滑動顯示紅色的刪除按鈕。我可以在UITableView上禁用此功能,但是我還沒有看到任何現有的問題可以在單元類中完成,這意味着我不需要在每個使用該單元的表上執行此操作。防止UITableViewCell子類允許刷卡刪除?

是否可以直接在單元類中禁用此選項(不完全禁用編輯,我有自定義的可拖動溢出)?

回答

1

您需要實現editingStyleForRowAtIndexPath並有執行測試。

如果只有一個單元,將有此可平移溢出,你知道哪一行,你可以定義爲一個常數和測試,像這樣:

#define kPANNABLE_OVERFLOW_CELL_ROW 7 

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row == kPANNABLE_OVERFLOW_CELL_ROW) 
    return UITableViewCellEditingStyleNone; 
} 

如果你有多個,任意細胞需要這種治療,你需要處理它有點不同。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // create your table view cell 
    if (_Your_table_view_cell_is_the_pannable_overflow_type_) { 
     cell.editingStyle = UITableViewCellEditingStyleNone; 
    } 
} 
3

只需使用:

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    return indexPath.row != THE_ROW_YOU_WANT_TO_STOP; 
} 
1

嘗試重寫- (void)setEditing: animated:方法以下列方式:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:NO animated:NO]; 
} 
1
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewCellEditingStyleNone; 
} 

試試上面的代碼只是禁用從tableview中細胞刷卡刪除按鈕。

編輯:從細胞隱藏按鈕去這裏

iPhone UITableView - Delete Button