我需要隐藏或删除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源代码中删除并重新添加它们。除非有特定原因你不想这样做。 – Digitalsa1nt