Определены розетки, подключены их, все они возвращают (ноль) - PullRequest
2 голосов
/ 23 марта 2010

Я пытаюсь играть с WebView.

Я сделал розетку:

IBOutlet UIWebView *browser;

Определено как свойство:

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

Синтезировал это:

@synthesize browser;

Наконец, я подключил его в Интерфейсном Разработчике, действительно так.

Тогда я пытаюсь что-то с этим сделать, т. Е. :

[browser loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://apple.com"]]];

Или также:

Etape *etape = [[Etape alloc] init];

NSString *html = [etape generateHTMLforEtape:[current_etape objectAtIndex:0]];
[browser loadHTMLString:html baseURL:nil];

[etape release];

Я не получаю ошибок, я пытался построить и проанализировать, никаких уведомлений, предупреждений или ошибок ... Я искал целый день, пожалуйста, помогите мне: /

Большое спасибо!

РЕДАКТИРОВАТЬ: Вот скриншоты моих соединений для моего WebView: Соединения http://pousli.net/uploads/crap/outlet.png

РЕДАКТИРОВАТЬ: Вот как я называю представление:

    DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];

    dvController.workflow_id = parent_id;

    Etape *etape = [[Etape alloc] init];
    dvController.etapes = [etape getEtapes:parent_id];
    [etape release];

    [self.navigationController pushViewController:dvController animated:YES];

    [dvController release];

Ответы [ 5 ]

3 голосов
/ 23 марта 2010

Некоторые мысли:

В зависимости от того, в каком методе вы запускаете этот код, розетки могут быть еще не подключены. Наиболее распространенное место для начала взаимодействия с вашими торговыми точками - метод viewDidLoad, viewWillAppear: или viewDidAppear: после вызова реализации super. Если вы пытаетесь сделать это в вашем init методе, ваши магазины, вероятно, все еще nil. Перо не загружено, и розетки не подключены, пока кто-то не запросит view вашего контроллера. Может ли это быть тем, что вы испытываете?

Если вы NSLog(@"%@", browser); в методе, где вы знаете, что представление должно существовать, но регистрироваться (null), то это признак того, что ваши торговые точки каким-то образом потеряли свои связи.

РЕДАКТИРОВАТЬ # 1 Вы уверены, что у вас правильно написано название вашей хибы при вызове initWithNibName:bundle:? (Кстати, вы можете передать nil для пакета, и он будет принимать [NSBundle mainBundle])

1 голос
/ 23 марта 2010

У меня была эта проблема раньше. Это выглядит связано, но вещи просто не работают. Ненавижу это говорить, но вы пытались перезапустить XCode? (У меня была эта проблема прежде, и, хорошо, перезапуск Xcode решил проблему.)

1 голос
/ 23 марта 2010

Одним из объяснений является то, что браузер не сохраняется, потому что вы не используете конструкцию «self.attribute» для вызова синтезированного сеттера, который выполняет сохранение. Браузер загружается в перо, но к тому моменту, как вы начали использовать его, он был выпущен.

Попробуйте переключить «браузер» на «self.browser» и посмотреть, решит ли это проблему.

1 голос
/ 23 марта 2010

Это может быть связано с тем, как вы init просматриваете. Если контроллер представления загружается в коде, вам необходимо убедиться, что его представление также загружается.

Для этого init контроллер представления с initWithNibName:bundle: и убедитесь, что для «владельца файла» в NIB, содержащем представление, задано имя класса контроллера представления.

1 голос
/ 23 марта 2010

Во-первых, вы, возможно, подключили его к @property ИЛИ к IBOutlet (по моему опыту Интерфейсный конструктор легко запутывается). Возможно попробуйте объявить как:

UIWebView *browser_;
@property (nonatomic, retain) IBOutlet UIWebView *browser;
@synthesize browser=browser_;
...