Я получаю странное поведение.UIStackView вызов вызова возвращает ноль только на фактическом ipad, а не на симуляторе
UIStackView *stackView = [UIStackView alloc];
stackView = [stackView initWithArrangedSubviews:@[self.subview1,self.subview2]];
[self addSubview:stackView];
[stackView setTranslatesAutoresizingMaskIntoConstraints:NO]
[self addConstraint:[NSLayoutConstraint constraintWithItem:stackView attribute: NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeTop multiplier:1.0f constant:0]]
Этот код прекрасно работает, когда я использую тренажер Ipad Air 2 из XCode, но когда я на самом деле пытаюсь запустить его на моем Ipad 2 воздуха, он падает при попытке добавить ограничение макета (последнюю строку кода), жалуясь, что stackView
- nil
.
После прохождения кода я на самом деле обнаружил, что stackView
является nil
после первой строки, звонок [UIStackView alloc]
. Это странно для меня, так как я не знаю, почему вызов alloc будет return nil
, а тем более почему он будет return nil
только на реальном устройстве, а не на моделировании устройства.
Edit:
Я первоначально имел код следующим образом:
UIStackView * stackView = [[UIStackView alloc] initWithArrangedSubviews:@[self.subview1,self.subview2]];
[self addSubview:stackView];
[stackView setTranslatesAutoresizingMaskIntoConstraints:NO]
[self addConstraint:[NSLayoutConstraint constraintWithItem:stackView attribute: NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeTop multiplier:1.0f constant:0]]
В этом случае stackView
был nil
после комбинированного alloc
/init
вызова, но я не знаю, какой из них сделал это nil
. Поэтому я отделил звонки, чтобы посмотреть.
Ваш iPad работает под управлением iOS 9? – dan
Да, он работает iOS 9.2 –