2014-02-20 154 views
0

我收到一個錯誤,指示我需要在刪除行後更新UITableView中的行數。我意識到這是因爲我沒有更新UITableView中的行數,我只是不確定如何在下面的代碼中進行此更改。NSInternalInconsistencyException從UITableView刪除行時

任何援助真的很感激。

- 代碼

 NSIndexPath[] rowsToReload = new NSIndexPath[] { 
      NSIndexPath.FromRowSection(1, 1) 
     }; 

     dv.TableView.BeginUpdates(); 

      dv.TableView.DeleteRows(rowsToReload,UITableViewRowAnimation.Automatic); 

     dv.TableView.EndUpdates(); 

- 錯誤

名稱:!NSInternalInconsistencyException原因:無效更新:後第1行的無效數字包含在現有的部分的行數更新(3)必須等於該部分包含更新前的行數(3)

回答

0

@Dimitris謝謝你回答我的問題。我結束了由解決問題:

  • 調用重載方法對我的UITableView

    NSIndexPath[] rowsToReload = new NSIndexPath[] { 
         NSIndexPath.FromRowSection(1, 1) 
        }; 
    
        dv.TableView.ReloadRows (rowsToReload,UITableViewRowAnimation.None); 
    
  • 在我的UITableViewCell GetCell方法

我刪除了標籤,現場和按鈕包含在表的第一個加載中。由於在我的應用程序中的這個屏幕只會被看到一次,當用戶第一次加載它。

1

上面的代碼是可以的。但是,您需要在之後將其稱爲,您已從數據源中刪除相應的項目。

例如,如果你是從List<string>(myList中)填寫您的表視圖,你想刪除的第一行:

myList.RemoveAt(0); // remove the item from the list first 
NSIndexPath[] rowsToDelete = new NSIndexPath[] { 
    NSIndexPath.FromRowSection(0, 0) 
}; 
dv.TableView.DeleteRows(rowsToDelete, UITableViewRowAnimation.Automatic); 

無需包裹DeleteRows在通話開始/ EndUpdates,如您只需執行一個刪除操作。當你有多個不同的動作時(例如DeleteRows + InsertRows),這樣就可以使動畫順利執行。

+0

我沒有使用列表。這些項目被添加到添加到根元素的部分(單擊觸摸對話框)。任何想法,我可以迎合這種情況?/ ---起始碼返回新rootElement的( 「」){\t \t \t \t \t部,\t \t \t \t \t新科(){\t \t \t \t \t \t(entryElement =新CustomEntryElement( 「文本」)),\t \t \t \t \t \t(StyledStringElement =新CustomStyledStringElement( 「文本」,代表{triggerMethod();})),\t \t \t \t \t \t(StyledStringElement = new CustomStringElementButton(「text」,delegate {triggerMethod2(); }))\t \t \t \t \t},\t \t \t \t}; – user686483