Добавление подпункта UIView не работает - PullRequest
1 голос
/ 17 января 2012

У меня есть UIViewController класс MyClass, который изначально не имел XIB и был инициализирован программно. Теперь я не хочу загружать его из XIB, но я хочу сделать небольшой UIView 50x50 (представление с наложением настроек), и я хочу добавить его MyClass, поэтому вместо того, чтобы программно объявлять представление с наложением новых настроек Я думал, что создам XIB-файл, установим для владельца файла MyClass, объявим в MyClass.h и IBOutlet UIView *settingsOverlay и свяжем его в XIB.

Затем в методе viewDidLoad я делаю [self.view addSubview:settingsOverlay], но по какой-то раздражающей причине это не работает. Это просто не появляется. Я попытался создать простой UIImageView программным способом и добавить его в subView, и он работает просто отлично, но когда это делается через XIB, он не работает. Кто-нибудь может указать, что может быть не так? Пожалуйста, дайте мне знать, какие еще детали мне могут понадобиться.

Ответы [ 3 ]

2 голосов
/ 17 января 2012

Если вы пытаетесь добавить представление с использованием xib, вам нужно использовать метод loadNibNamed.

[[NSBundle mainBundle] loadNibNamed:@"settingsOverlay" owner:self options:nil];

Для получения дополнительной информации вы можете обратиться по ссылке разработчика - http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/NSBundle_UIKitAdditions/Introduction/Introduction.html

1 голос
/ 17 января 2012

Вам необходимо загрузить xib MyClass до того, как будет установлен settingsOverlay. Попробуйте добавить эту строку перед вызовом addSubview.

[[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:self options:nil];
1 голос
/ 17 января 2012

Создание XIB для представления наложения настроек и присвоение его владельцу MyClass не означает, что XIB будет загружен в результате создания экземпляра MyClass вручную. Вам нужно будет вручную загрузить XIB-представление настроек в MyClass viewDidLoad и добавить его в качестве подпредставления. Загрузка его и передача владельца как самого себя приведет к его привязке к созданному вами IBOutlet, но вам все равно придется добавить его как подпредставление.

Код в viewDidLoad будет выглядеть так:

[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self];
[self.view addSubview:self.overlayView];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...