我有一個UITableView
選擇導致詳細視圖。我有一個BarbuttonItem
,名爲比較啓用編輯模式(在Storyboard中檢查多個編輯)。UITableView編輯中的多項選擇 - 最多兩行選擇?
我希望用戶能夠精確地選擇兩個條目(當選擇兩個時,另一個OK按鈕將可用,否則只有取消按鈕將被啓用)。
我能夠啓用基於選定行的數量的OK按鈕,但我怎樣才能禁用選擇兩個已被選中?
我有一個UITableView
選擇導致詳細視圖。我有一個BarbuttonItem
,名爲比較啓用編輯模式(在Storyboard中檢查多個編輯)。UITableView編輯中的多項選擇 - 最多兩行選擇?
我希望用戶能夠精確地選擇兩個條目(當選擇兩個時,另一個OK按鈕將可用,否則只有取消按鈕將被啓用)。
我能夠啓用基於選定行的數量的OK按鈕,但我怎樣才能禁用選擇兩個已被選中?
嘗試以下操作:
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView.indexPathsForSelectedRows.count == 2 && ![tableView.indexPathsForSelectedRows containsObject:indexPath]) {
return nil;
}
return indexPath;
}
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
return ([self tableView:tableView willSelectRowAtIndexPath:indexPath] != nil);
}
解釋:
首先是你應該在willSelectRow(BEFORE選擇)而不是didSelectRow(AFTER選擇)中進行檢查。 你檢查是否達到最大...
if (tableView.indexPathsForSelectedRows.count == 2
,如果達到最大您需要做的另一個檢查,使細胞工作的撤銷選擇:
&& ![tableView.indexPathsForSelectedRows containsObject:indexPath])
如果達到最大與當前所選行尚未選擇你根本
return nil;
你也應該實現shouldHighlighRow方法來處理
被選中,但取消選擇一毫秒你不想以後
行爲。希望我得到你的權利:)
您需要在didSelectRowAtIndexPath:
方法中構建此邏輯。跟蹤已經選擇的單元的數量,以及它的2是否沒有進一步執行代碼。
在didSelectRowAtIndexPath方法:檢查selectedEntries算,如果是2然後使用下面的代碼: -
[self.tableView deselectRowAtIndexPath:indexPath animated:NO];
return;
如果我這樣做,我可以看到它是如何被選中,但沒有選擇一毫秒後...是否有可能「看不到」的選擇呢? – Kathi