2014-02-20 2 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 Причина: Invalid обновление: неверное число строк в разделе 1. Количество строк, содержащиеся в существующем разделе после update (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 позвонить в Begin/EndUpdates, а у вас есть только одно действие удаления для выполнения. Это используется, когда вы выполняете несколько разных действий (например, DeleteRows + InsertRows), чтобы анимация выполнялась плавно.

+0

Я не пользуюсь списком. Элементы добавляются в раздел, который добавляется в корневой элемент (диалог Mono touch). любые идеи, как я могу удовлетворить эту ситуацию?/ --- запуск кода возврата нового 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

Смежные вопросы