Мне нужно скрыть или удалить статическую строку из TableView.Xamarin.iOS - Как скрыть или удалить статическую ячейку из TableViewController
Я пробовал несколько методов, но ничего не работает.
Я попытался это:
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
if (TableView.NumberOfRowsInSection(0) == 9)
{
TableView.CellAt(NSIndexPath.FromItemSection(0, 0)).RemoveFromSuperview();
TableView.ReloadRows(new NSIndexPath[] { TableView.IndexPathForCell(TableView.CellAt(NSIndexPath.FromItemSection(0, 0))) }, UITableViewRowAnimation.Fade);
}
}
Но не работает, клетка продолжала в TableView.
Я стараюсь это:
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
if (TableView.NumberOfRowsInSection(0) == 9)
{
TableView.DeleteRows(new NSIndexPath[] { NSIndexPath.FromItemSection(0, 0) }, UITableViewRowAnimation.None);
}
}
Но это исключение:
Foundation.MonoTouchException: исключение Objective-C выброшен. Имя: NSInternalInconsistencyException Причина: Неверное обновление: недействительно количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (9), должно быть равно числу строк , содержащихся в этом разделе, перед обновлением (9), плюс или минус количество строк, вставленных или удаленных из этого раздела (вставлено 0, 1 удалено) и плюс или минус количество строк, перемещенных в или из , этот раздел (0 перемещен, 0 удален).
После этого я попытался это:
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
if (TableView.NumberOfRowsInSection(0) == 9)
{
TableView.DataSource.CommitEditingStyle(TableView, UITableViewCellEditingStyle.Delete, NSIndexPath.FromItemSection(0, 0));
TableView.DeleteRows(new NSIndexPath[] { NSIndexPath.FromItemSection(0, 0) }, UITableViewRowAnimation.None);
}
}
Но теперь это исключение:
Foundation.MonoTouchException: Objective-C исключение брошено. Имя: NSInvalidArgumentException Причина: - [DetalheContas Tableview: commitEditingStyle: forRowAtIndexPath]: непризнанные селектор направил к экземпляру 0x7fd49590
Что мне делать?
У меня есть данные, которые должны появляться только в определенном состоянии, помните: я использую статические ячейки. Я попробовал ваш пример, но появляется эта ошибка: «Исходное исключение Foundation.MonoTouchException: исключение Objective-C. Имя: NSInternalInconsistencyException Причина: Неверное обновление: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (10) должно быть равно количеству строк, содержащихся в этом разделе перед обновлением (10), плюс или минус количество строк, вставленных или удаленных из этого раздела (вставлено 0, 1 удалено) » – Lnacer
Я попытался использовать ViewDidLayoutSubviews(), какой метод следует ли пытаться использовать? ViewWillAppear()? – Lnacer
Да «ViewWillAppear()», возможно, является более практичным решением, так как теоретически оно возникает только один раз при инициализации UIViewController. Сообщение об ошибке, которое вы получаете, связано с тем, что вы не удаляете какие-либо элементы из источника tableviews. Просто потому, что они являются статическими, это не означает, что вы не можете удалить и повторно добавить их из источника Tableviews. Если нет конкретной причины, по которой вы не хотите этого делать. – Digitalsa1nt