Почему элементы управления (нулевые) в awakeFromNib? - PullRequest
0 голосов
/ 28 апреля 2010

Это продолжение другого вопроса, касающегося того, почему я не могу установить UIControls в awakeFromNib. Ответ на этот вопрос заключается в том, что, как вы можете видеть ниже, элементы управления равны нулю в awakeFromNib, хотя они инициализируются правильными объектами к тому времени, когда мы достигаем viewDidLoad. Я настраиваю вид так же, как всегда, если я делаю что-то другое, чтобы получить к ним доступ, xib (nib) был разработан и сохранен в текущей версии Image Builder.

КОД:

@interface iPhone_TEST_AwakeFromNibViewController : UIViewController {
    UILabel *myLabel;
    UIImageView *myView;
}
@property(nonatomic, retain)IBOutlet UILabel *myLabel;
@property(nonatomic, retain)IBOutlet UIImageView *myView;
@end

.

@synthesize myLabel;
@synthesize myView;

-(void)awakeFromNib {
    NSLog(@"awakeFromNib ...");
    NSLog(@"myLabel: %@", [myLabel class]);
    NSLog(@"myView : %@", [myView class]);
    //[myLabel setText:@"AWAKE"];
    [super awakeFromNib];

}

-(void)viewDidLoad {
    NSLog(@"viewDidLoad ...");
    NSLog(@"myLabel: %@", [myLabel class]);
    NSLog(@"myView : %@", [myView class]);
    //[myLabel setText:@"VIEW"];
    [super viewDidLoad];
}

ВЫВОД:

awakeFromNib ...
myLabel: (null)
myView : (null)
viewDidLoad ...
myLabel: UILabel
myLabel: UIImageView

Очень ценится ...

* 1016 Гэри *

Ответы [ 3 ]

1 голос
/ 02 августа 2015

iboutlet был подключен к элементу управления, который был подпредставлением view

и view была ленивая нагрузка

, чтобы вы могли получить к нему доступ первым, как показано ниже:

func awakeFromNib() {
    super.awakeFromNib()
    let _ = self.view
    println("\(self.myLabel)")
}
0 голосов
/ 28 апреля 2010

Более подробную информацию о можно получить здесь

0 голосов
/ 28 апреля 2010

Это может произойти, например, если View для ViewController загружен из другого NIB. Эти соединения инициализируются и исправляются только тогда, когда этот NIB действительно загружен, потому что они не существуют в NIB, который фактически создает и пробуждает ваш контроллер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...