#iphone #objective-c #ios #uitableview #ios4
#iPhone #objective-c #iOS #uitableview #ios4
Вопрос:
вот код, который я создаю для UISearchBar программно
- (void)loadView {
[super loadView];
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,320,30)];
searchBar.delegate = self;
[self.view addSubview:searchBar];
}
Комментарии:
1. Что это за предупреждение?
2. Такой код обычно отправляется в -(void) viewDidLoad {}
Ответ №1:
Вы не опубликовали предупреждение. Тем не менее, я все еще могу предположить, что это одна из следующих двух возможностей:
- Предупреждение в строке,
searchBar = [[UISearchBar...
говорящее что-то о типах. Это может указывать на то, чтоsearchBar
неверно определено какUISearchBar*
. - Предупреждение в строке
searchBar.delegate = self
, говорящее что-то оid<UISearchBarDelegate>
. Проблема здесь в том, что ваш текущий класс никогда не объявлял себя соответствующимUISearchBarDelegate
протоколу. В этом случае вам необходимо внести изменения в свое@interface
объявление следующим образом:@interface MyClass : MySuperclass <UISearchBarDelegate>
Комментарии:
1. локальное объявление панели поиска скрывает переменные экземпляра: спасибо за то, что я попробовал это, но это все еще выдает мне предупреждение: (
2. У вас нет локального объявления searchbar в опубликованном вами коде.
Ответ №2:
Возможно, ваш класс не соответствует UISearchBarDelegate
? Измените объявление класса с
@interface MyClass : NSObject
...
@end
Для
@interface MyClass : NSObject<UISearchBarDelegate>
...
@end
В любом случае, что это за предупреждение?
Комментарии:
1. локальное объявление searchbar скрывает переменные экземпляра
2. аргумент
searchBar
вашего метода имеет то же имя, что и ваша переменная экземпляраsearchBar
. переименуйте один или другой.
Ответ №3:
1- @interface YourClassName: родительский класс < UISearchBarDelegate, UISearchDisplayDelegate, UIPopoverControllerDelegate, UIAlertViewDelegate>
@property UISearchBar *srchBar;
@end
2- @synthesize srchBar; // в файле .m
3- [self.srchBar setDelegate:self]; // в viewDidLoad
4- [srchBar resignFirstResponder]; // подать в отставку ТАКИМ ОБРАЗОМ!