Почему я получаю эти ошибки при попытке добавить UIWebView в этот файл заголовка ViewController?

#objective-c #ipad #uiwebview

#objective-c #iPad #uiwebview

Вопрос:

Я следовал приведенным здесь инструкциям: http://matt.might.net/articles/how-to-native-iphone-ipad-apps-in-javascript /

Вот простые шаги по превращению веб-приложения в собственное приложение:

  1. Откройте XCode.
  2. Создайте новый проект iPhone «Приложение на основе представления».
  3. Переместите файлы для вашего веб-приложения в папку ресурсов в XCode, но удалите манифест кэша. (Вы же не хотите, чтобы манифест все испортил, поскольку теперь все локально.)
  4. Создайте новую переменную экземпляра WebView внутри файла заголовка @interface ViewController: IBOutlet UIWebView* WebView ; // IBOutlet означает, что он виден Interface Builder.
  5. и создайте свойство: @property (неатомное, сохранить) UIWebView *Веб-просмотр;

Вот что у меня есть на данный момент (ViewController.h):

 #import <UIKit/UIKit.h>

@interface ViewController : UIViewController

    IBOutlet UIWebView* webView;

@property (nonatomic, retain) UIWebView *webView;
@end
  

Однако на шаге 4 я получаю две ошибки в моем заголовочном файле ViewController:

введите описание изображения здесь

«невозможно объявить переменную внутри @interface или @protocol»

и

«атрибут iboutlet может быть применен только к переменным или свойствам экземпляра»

Итак, что я делаю не так, или это неправильное руководство по веб-сайту?

Примечание: я скачал образец проекта, который у него был для iPhone, и он сработал, но я следую руководству, чтобы сделать версию для iPad.

Я нахожусь в XCode 4, и ошибка показывает, использую ли я iOS 5 или iOS 4.3, похоже, не имеет значения.

Ответ №1:

Там не хватает пары фигурных скобок:

 #import <UIKit/UIKit.h>

@interface ViewController : UIViewController {
    UIWebView *webView;
}

@property (nonatomic, retain) IBOutlet UIWebView *webView;

@end
  

Комментарии:

1. Вам также нужно будет добавить IBOutlet в ваше заявление о собственности.

2. Блин, я думал, что чего-то не хватает… Наверное, я слишком многого ожидал от XCode, спасибо.

3. @Bill: да, я тоже только что это заметил. Руководство, на которое ссылается OP, является типичным, неполным и вводящим в заблуждение руководством по iPhone.

4. @Ryan: IBOutlet обычно находится в свойстве, а не в объявлении переменной экземпляра. Я отредактировал свой ответ, чтобы показать это.

5. да, только что вернулся к потоку, прежде чем он сказал подождать 7 минут 😉

Ответ №2:

Я думаю, вы забыли скобки; попробуйте изменить свой код на

 #import <UIKit/UIKit.h>

@interface ViewController : UIViewController {

    IBOutlet UIWebView* webView;
}

@property (nonatomic, retain) UIWebView *webView;
@end