我需要隐藏或删除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节中的行数。包含在中的行数 更新后的现有部分(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:]:unrecognized 选择器发送到实例0x7fd49590
我该怎么办?
答案 0 :(得分:0)
我不完全确定你为什么要从“ViewDidLayoutSubviews()' ViewDidLayoutSubviews()'中删除表格视图中的单元格?因为这将被多次调用,因此当您尝试删除它时,该单元格将不会始终存在。我在这里假设它确实是一个你试图删除的单元格。这里有一个示例代码片段,用于使用&#f; fade'从表中删除单元格。我可以在上面看到你使用的动画:
YourTableSource.ReplaceSource(SomeData);
SomeTable.BeginUpdates();
SomeTable.DeleteRows(new NSIndexPath[] { NSIndexPath.FromItemSection(0, 0)}, UITableViewRowAnimation.Fade);
SomeTable.EndUpdates();
值得注意的是,您的来源数量必须根据您提交的删除数量而有所不同。