1

MonoTouch.Dialogを使用して、単純なテーブルを追加し、ScopeBarを追加します。

     this.Style = UITableViewStyle.Plain;
     this.EnableSearch = true;
     this.AutoHideSearch = false;
     this.SearchPlaceholder = "Search".t();
     UISearchBar sb = TableView.TableHeaderView as UISearchBar;
     if (sb != null)
     {
        sb.ScopeButtonTitles = new string[] { "Girl".t(),"Boy".t(),"All".t() };
        sb.ShowsScopeBar = true;
        sb.SizeToFit();
     }

いいね:

ここに画像の説明を入力してください

セクションを設定してタイトルを付けると、スコープバーの上部にセクションが表示されます。

Section secMain = new Section("Top 100".t());

ここに画像の説明を入力してください

4

1 に答える 1

0

これを行うには、MonoTouch.Dialog.DialogViewController を変更し、void SetupSearch()保護された仮想にする必要があります。

次に、コントローラーで SetupSearch メソッドを次のコードでオーバーライドします。このアプローチの欠点は、カスタム検索デリゲートを使用する必要があることです。しかし、あなたの他のいくつかの質問への回答を見ると、あなたはすでにそれを行っているようです。

    protected override void SetupSearch()
    {
        SearchBar = new UISearchBar(new RectangleF (0, 0, TableView.Bounds.Width, 90))
        {
            Delegate = new MySearchBarDelegate(this),
            Placeholder = "Search".t(),
            ShowsScopeBar = true,
            ScopeButtonTitles = new [] { "Girl".t(),"Boy".t(),"All".t() },
            SelectedScopeButtonIndex = 0,
        };

        TableView.TableHeaderView = SearchBar;                  
    }

    public class MySearchBarDelegate : UISearchBarDelegate
    {
        MyViewController _container;

        public SearchDelegate (MyViewController container)
        {
            _container = container;
        }

        public override void SelectedScopeButtonIndexChanged (UISearchBar searchBar, int index)
        {
            _container.SearchScopeChanged(searchBar, index);
        }

        public override void OnEditingStarted (UISearchBar searchBar)
        {
            searchBar.ShowsCancelButton = true;
            _container.StartSearch ();
        }

        public override void OnEditingStopped (UISearchBar searchBar)
        {
            searchBar.ShowsCancelButton = false;
            _container.FinishSearch ();
        }

        public override void TextChanged (UISearchBar searchBar, string searchText)
        {
            _container.PerformFilter (searchText ?? "");
        }

        public override void CancelButtonClicked (UISearchBar searchBar)
        {
            searchBar.ShowsCancelButton = false;
            _container.SearchBar.Text = "";
            _container.FinishSearch ();
            searchBar.ResignFirstResponder ();
        }

        public override void SearchButtonClicked (UISearchBar searchBar)
        {
            _container.SearchButtonClicked (searchBar.Text);
        }
    }
于 2013-03-26T23:46:39.123 に答える