2011-02-23 34 views
1

當用戶切換表編輯模式使用此代碼我加入一行到一個UITableView節時:的iOS:editingStyleForRowAtIndexPath添加新的細胞

是創建該對象的「添加新供應商...「排。這是有效的,但是當表想要獲得編輯樣式,以便它可以添加加號或減號圖標時,我遇到問題。

- (UITableViewCellEditingStyle) tableView:(UITableView *) tableView editingStyleForRowAtIndexPath:(NSIndexPath *) indexPath { 
    return ([self.tableView isEditing] && indexPath.row == 0) ? UITableViewCellEditingStyleInsert : UITableViewCellEditingStyleDelete; 
} 

序列似乎是這樣的:

  1. 表切換到編輯。目前只有一個供應商行,所以它查詢行== 0的編輯樣式。
  2. 新行的插入完成,然後再次觸發另一個編輯樣式的查詢,並且行== 0。

所以,如果我使用這個序列,並使用行號和tableView isEditing來決定編輯樣式圖標,我最終會添加新的和當前的供應商行上加上圖標。

什麼是插入一行並分配適當的編輯風格的最佳方式 - 加上添加新行,減去任何其他行?

回答

3

你有沒有試過把你的「添加新...」行放在底部而不是頂部?不是檢查[indexPath row] == 0的你,而不是檢查[indexPath row] == [items count],和你的tableView:numberOfRowsInSection:實施看起來是這樣的:

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section { 
    int numberOfRows = [items count]; 

    if ([self isEditing]) { 
     numberOfRows++; 
    } 

    return numberOfRows; 
} 

這是iPhone編程示例如何:大書呆子牧場指導工作。

+1

謝謝,我已經有了這樣的代碼到位。我試圖弄清楚的是如何判斷在發送editingStyleForRowAtIndexPath消息時正在查詢哪個單元格。問題的一部分似乎是在執行插入的同時,UITableView實際上並沒有添加單元,因爲代碼還沒有返回到運行循環。 – drekka 2011-02-24 11:02:09

+0

給出進一步的細節 - 如果我將代碼添加到查詢UITableView索引路徑的行的editingStyleForRowAtIndexPath方法。插入新單元格後,我仍然會返回當前單元格,因爲UITableView尚未具有新的「添加」單元格。我必須等待運行循環執行並在發生之前發生動畫。 – drekka 2011-02-24 11:31:55