テーブルビューから静的な行を非表示または削除する必要があります。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);
}
}
をしかし、動作しません、セルがテーブルビューで続けました。
私はこれ試してみてください。
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の行数が無効です。 (0が挿入され、1が削除されました) " – Lnacer
私はViewDidLayoutSubviews()を試しましたが、どのメソッド私は使ってみるべきですか? ViewWillAppear()? – Lnacer
はい、 'ViewWillAppear()'は理論的にはUIViewControllerの初期化ごとに1回しか発生しないので、おそらく実際的な解決策です。取得しているエラーメッセージは、テーブルビューソースから項目を削除していないためです。静的であるという理由だけで、Tableviewsソースから削除して再追加することはできません。あなたがこれをやりたくない特別な理由がない限り。 – Digitalsa1nt