Я думаю, что мне не хватает чего-то фундаментального, и поэтому я хочу попросить сообщество помочь. Я создаю приложение, основанное на базовом приложении для iPhone. Мой MainView и FlipsideView имеют некоторые элементы, поэтому я создал отдельные ViewControllers и nib-файлы для этих фрагментов. Для этого я сделал следующее: 1. Создал viewcontroller, называемый searchDateViewController, который является владельцем файла searchDateView.xib 2. searchDateView.xib - это в основном UIView с UILabel внутри, вид правильно подключен 3. Внутри обоих MainViewController.m и FlipsideViewController.m добавить подвид, как folllows:superview и parentviewcontroller nil после добавления subview
- (void)loadView{
[super loadView];
searchDateViewController = [[SearchDateViewController alloc] initWithNibName:@"SearchDateView" bundle:nil];
[[searchDateViewController view] setFrame:[searchDateView frame]];
[[self view] addSubview:[searchDateViewController view]];
...
}
Everything дисплеев и работает просто отлично. В основном в зависимости от действий, которые происходят в каждом из основных и обратных представлений, UILabel из ниба изменяется. Тем не менее, я хотел сделать что-то немного другое, если searchDateViewController загружен из MainView или FlipsideView. Однако я не могу понять, какой ViewController добавляет подпрограмму searchDateViewController.
В searchDateViewController я попробовал:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"superview %@", self.view.superview);
NSLog(@"parentviewcontroller %@", self.parentViewController);
}
В обоих случаях я получаю ноль.
Итак, мой вопрос: могу ли я узнать, какой ViewController добавляет searchDateViewController a subview? Если да, то как? Или, если моя логика здесь полностью перепутана, как я должен это делать?
Спасибо!
Благодарим за то, что указали мне в правильном направлении относительно subviews и подклассов UIViewController. Если я сделаю SearchDateViewController подклассом NSObject, как это повлияет на то, как я добавляю subviews и инициализацию с помощью nib? Я не нашел примеров subviews как nsobjects, а не viewcontrollers, но я хочу начать использовать любую стандартную практику в этом случае. Дайте мне знать, если у вас есть еще советы - спасибо! Кроме того, вы оба предложили использовать parentcontroller, что имеет смысл, но какую роль играет супервизор? Будет ли это более уместным здесь? – deadroxy
Создание SearchDateViewController подкласса NSObject не устраняет вашу проблему, оно просто предотвращает будущие проблемы, поскольку UIViewControllers на самом деле не предназначены для использования для представлений, которые не занимают всего окна IMHO. Чтобы решить вашу проблему, ваш код настройки просмотра не должен полностью полагаться на self.parentViewController или view.superview. Вместо этого определите свойство в SearchDateViewController (может быть BOOL или перечисление), которое затем запрашивает, чтобы решить, как настроить представление. Объект, создающий SearchDateViewController, должен установить свойство. –
Я сделал так, как вы сказали, создав свойство в классе SearchDateViewController, который отлично работал. Тем не менее, я все еще озадачен тем, как перейти от подкласса UIViewController к UIView/NSObject. В частности, кто станет владельцем файла SearchDateView? Я пробовал каждый путь и все, что я делал, приводит к ошибкам ... – deadroxy