почему xcode выдает мне это предупреждение?

#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:

Вы не опубликовали предупреждение. Тем не менее, я все еще могу предположить, что это одна из следующих двух возможностей:

  1. Предупреждение в строке, searchBar = [[UISearchBar... говорящее что-то о типах. Это может указывать на то, что searchBar неверно определено как UISearchBar* .
  2. Предупреждение в строке 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]; // подать в отставку ТАКИМ ОБРАЗОМ!