Я новичок в iOS, и я использую Xamarin Studio на MacOS (у меня уже есть приложение Xamarin.Droid и теперь это делается на iOS).UISearchBar SearchButtonClicked никогда не вызывал?
Я борюсь с использованием UISearchBar, я хочу действительно базовое использование tho .. Я пытался следовать этим рецептам (https://developer.xamarin.com/recipes/ios/content_controls/search-controller/), но все равно не могу заставить его работать.
То, что я пытаюсь получить, - это SearchBar, в котором пользователь должен набрать текст, а затем нажать кнопку «Поиск» на клавиатуре. Нажатие кнопки поиска вызовет код, который будет заполнять UITableView данными, полученными на моем веб-сервисе.
Вот мой Раскадровка структуру, ViewController которая содержит UITableView с именем
Я попытался следующий код, все, кажется, работать нормально, но w курица жму поиск на клавиатуре, SearchButtonClicked событие никогда не уволят ... И я не могу понять, почему
public partial class SearchViewController : UIViewController
{
public SearchViewController(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
var searchController = new UISearchController(this);
searchController.SearchBar.SizeToFit();
searchController.SearchBar.ShowsCancelButton = true;
searchController.SearchBar.SearchButtonClicked += delegate {
Console.WriteLine("Hello ????");
this.Title = "This code is never called";
};
RunnersSearchTableView.TableHeaderView = searchController.SearchBar;
base.ViewDidLoad();
}
}
также попытался
public partial class SearchViewController : UIViewController
{
public SearchViewController(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
var searchController = new UISearchController(this);
searchController.SearchBar.SizeToFit();
searchController.HidesNavigationBarDuringPresentation = true;
searchController.SearchBar.ShowsCancelButton = true;
searchController.SearchBar.Delegate = new MySearchBarDelegate();
RunnersSearchTableView.TableHeaderView = searchController.SearchBar;
base.ViewDidLoad();
}
}
public class MySearchBarDelegate : UISearchBarDelegate
{
public MySearchBarDelegate()
{
}
public override void SearchButtonClicked(UISearchBar searchBar)
{
Console.WriteLine("TEST");
searchBar.ResignFirstResponder();
base.SearchButtonClicked(searchBar);
}
}
А также пытались
public partial class SearchViewController : UIViewController
{
public SearchViewController(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
var searchController = new UISearchController(this);
searchController.SearchBar.SizeToFit();
searchController.HidesNavigationBarDuringPresentation = true;
searchController.SearchBar.ShowsCancelButton = true;
searchController.SearchBar.WeakDelegate = this;
RunnersSearchTableView.TableHeaderView = searchController.SearchBar;
base.ViewDidLoad();
}
[Export("searchBarSearchButtonClicked:")]
public virtual void SearchButtonClicked(UISearchBar searchBar)
{
Console.WriteLine("hello??");
searchBar.ResignFirstResponder();
}
}
Ни один из них не работает
Благодарим за отзыв. Где я должен зарегистрировать делегат? В моем классе UIViewController? Это не работает. У меня есть дубликат атрибута Register. Я попытался установить WeakDelegate = this на моем SearchBar, а затем экспортировать SearchButtonClicked, например: https://github.com/xamarin/ios-samples/blob/master/ios8/TableSearch/TableSearch/MainTableViewController.cs, но он не работайте: / –