我想阻止自定義UITableViewCell
滑動顯示紅色的刪除按鈕。我可以在UITableView
上禁用此功能,但是我還沒有看到任何現有的問題可以在單元類中完成,這意味着我不需要在每個使用該單元的表上執行此操作。防止UITableViewCell子類允許刷卡刪除?
是否可以直接在單元類中禁用此選項(不完全禁用編輯,我有自定義的可拖動溢出)?
我想阻止自定義UITableViewCell
滑動顯示紅色的刪除按鈕。我可以在UITableView
上禁用此功能,但是我還沒有看到任何現有的問題可以在單元類中完成,這意味着我不需要在每個使用該單元的表上執行此操作。防止UITableViewCell子類允許刷卡刪除?
是否可以直接在單元類中禁用此選項(不完全禁用編輯,我有自定義的可拖動溢出)?
您需要實現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;
}
}
只需使用:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return indexPath.row != THE_ROW_YOU_WANT_TO_STOP;
}
嘗試重寫- (void)setEditing: animated:
方法以下列方式:
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:NO animated:NO];
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleNone;
}
試試上面的代碼只是禁用從tableview中細胞刷卡刪除按鈕。
編輯:從細胞隱藏按鈕去這裏