【发布时间】:2017-04-19 22:12:05
【问题描述】:
我需要隐藏或删除 TableView 中的静态行。
我尝试了几种方法,但没有任何效果。
我试过这个:
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 节中的行数。包含在第 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
我该怎么办?
【问题讨论】:
标签: ios uitableview xamarin xamarin.ios