独自の DialogViewController クラスを作成しました。ダイアログには 2 つのレベルがあります。ユーザーが編集ボタンをクリックして、2 番目のレベルの要素を削除できるようにしたいと考えています。
いくつかのコードで説明してみましょう。
public class TestMenu : DialogViewController
{
public TestMenu() : base (new RootElement("Menu"), true)
{
Section section = new Section ();
this.Root.Add (section);
RootElement firstRoot = new RootElement ("First level 1");
section.Add (firstRoot);
RootElement secondRoot = new RootElement ("First level 2");
section.Add (secondRoot);
// first rootelement
Section firstSection = new Section ();
firstRoot.Add (firstSection);
StringElement firstElement = new StringElement ("Second level element 1");
firstSection.Add (firstElement);
// Button to set edit mode
Section buttonSection = new Section ();
firstRoot.Add (buttonSection);
StringElement buttonElement = new StringElement ("Edit");
buttonElement.Tapped += delegate
{
// This works to get it in editing mode
firstRoot.TableView.SetEditing(true, true);
// This statement will not set it to editing mode
//this.SetEditing(true, true);
};
buttonSection.Add (buttonElement);
// second rootelement
Section secondSection = new Section ();
secondRoot.Add (secondSection);
StringElement secondElement = new StringElement ("Second level element 2");
secondSection.Add (secondElement);
}
public override Source CreateSizingSource (bool unevenRows)
{
return new TestSource(this);
}
class TestSource : DialogViewController.SizingSource
{
public TestSource(DialogViewController container)
: base (container)
{}
public override bool CanEditRow (UITableView tableView, NSIndexPath indexPath)
{
return true;
}
public override void CommitEditingStyle (UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath)
{
// This is only fired when something is deleted in the first level
base.CommitEditingStyle (tableView, editingStyle, indexPath);
}
}
}
ユーザーが編集セルをクリックすると、テーブルが編集モードに設定されます。
もちろん、削除アイコンをクリックしても何も起こりません。編集モードまたはスワイプを有効にして、第 2 レベル以降のルート要素に削除ボタンを表示するにはどうすればよいですか?
ダイアログ ビュー コントローラーの最初の画面で編集モードを有効にする方法を説明する次の投稿を読みました。編集モード-td4658436.html
これは第 1 レベルで機能しますが、第 2 レベル (第 2 レベル要素 1) で同じ方法でソースをサブクラス化することも可能ですか?