Я использую Xamarin iOS.Почему UISearchDisplayController должен быть переменной класса?
В ViewDidLoad
я инстанцировании мой UISearchBar
, UISearchDisplayController
, UISearchDisplayDelegate
и UITableViewSource
. Тем самым я использую переменную класса для UISearchDisplayController
. Поскольку я использовал его только в ViewDidLoad
, я переместил переменную класса для UISearchDisplayController
в локальную переменную.
Теперь странные вещи произошли:
- Поиск не работал больше. Независимо от моего ввода ничего не изменилось.
- Также поисковая панель не перемещалась на панель навигации, поскольку это стандартное поведение.
Теперь я вернул свои изменения обратно, и он снова работает. Я проверил свой код и ничего не изменил.
Но почему я могу использовать UISearchDisplayController
только как переменную класса?
Редактировать:
@class переменная:
namespace MyApp
{
partial class MyTableListController : UITableViewController
{
// class variable
private UISearchDisplayController searchController;
public MyTableListController (IntPtr handle) : base (handle)
{
// do some init
}
#region View lifecycle
public override void ViewDidLoad(){
// ..
}
}
}
Кажется, что контроллер используется не только в ViewDidLoad
и, следовательно, должны быть доступны в (например, переменной класса) весь класс.
Что такое «переменная класса»? Почтовый код должен быть ясным. На некоторых языках это означает статическое поле. –
@HenkHolterman: Я редактировал вопрос. – testing
Ваша переменная _class_ официально называется _field_ в C#. –