2015-07-05 16 views
0

我目前有一個包含項目列表的應用程序,現在我希望能夠搜索該列表。我知道我需要使用搜索欄和控制器,唯一的問題是,我找不到任何文檔或示例來實現此目的。我有一個搜索欄的控制器類設置,但它是一個空白類。這有什麼好的起點?在Xamarin.iOS上使用UISearchBar和搜索控制器

This question似乎是一個很好的選擇,但是哪裏去了,我該如何將它移植到C#for xamarin?

回答

1

我爲Storyboard和UISearchDisplayControlelr創建了這個演示。請看SearchDemo

+0

除了正常的標籤外,我還需要從detailTextLabel中進行搜索,並且在點擊搜索到的項目時,我需要將視圖推送到細節視圖控制器,這不會發生。我從GitHub下載了您的示例,並且在運行時,嘗試搜索時會引發異常,或者單擊某個項目。 – hightekjonathan

+0

@hightekjonathan從detailTextLabel中搜索很容易實現。我已經更新了演示。異常的詳細信息是什麼?它適用於我的iPhone 6 iOS 8.3模擬器。 –

+0

我目前無法檢查。我相信這是一個NSOutOfRangeException。我會在早上看看 – hightekjonathan

1

這是演示如何使用UISearchController的iOS示例應用程序。搜索控制器管理搜索欄的顯示(與結果視圖控制器的內容一致) 看看這個,然後讓我知道如果有任何問題。 https://github.com/xamarin/monotouch-samples/tree/master/ios8/TableSearch

+0

我實際上看着目前,但他們以編程方式添加搜索欄,我希望它在故事板。 – hightekjonathan

+0

所以只需在創建插座後給出搜索欄的名稱就可以工作 – Sport

+0

然後,我將代理設置爲SearchController嗎? – hightekjonathan

2

Xamarin 5.10:

var sampleSearchBar = new UISearchBar (new CoreGraphics.CGRect (20, 20, this.View.Frame.Width - 50, 40)); 
sampleSearchBar.SearchBarStyle = UISearchBarStyle.Prominent; 

sampleSearchBar.ShowsCancelButton = true; 

    //Deleagte class source 
    sampleSearchBar.Delegate = new SearchDelegate(); 
this.View.AddSubview (sampleSearchBar); 

添加Delegate類到ViewController。

class SearchDelegate : UISearchBarDelegate 
     { 
      public override void SearchButtonClicked (UISearchBar bar) 
      { 
       bar.ResignFirstResponder(); 
      } 

      public override void CancelButtonClicked (UISearchBar bar) 
      { 
       bar.ResignFirstResponder(); 
      } 

      public override bool ShouldBeginEditing (UISearchBar searchBar) 
      { 

       return true; 
      } 

      public override bool ShouldEndEditing (UISearchBar searchBar) 
      { 
       return true; 
      } 

      public override bool ShouldChangeTextInRange (UISearchBar searchBar, NSRange range, string text) 
      { 
       Console.WriteLine (searchBar.Text); 
       return true; 
      } 
     }