Я пытаюсь реализовать категорию на моем MainContainerViewController, которая возвращает основной экземпляр:
В моем .h:
@interface UIViewController(MainViewExtension)
/** Convience method for getting access to the MainContainerViewController instance */
- (MainContainerViewController *)mainContainerExtension;
@end
В моем .m
@implementation UIViewController(MainViewExtension)
- (MainContainerViewController *)mainContainerExtension
{
return (MainContainerViewController *)self;
}
@end
И поэтому с какого-то контроллера внешнего вида я делаю self.mainContainerExtension для доступа к экземпляру, и объявлен только один экземпляр, но он не дает мне нужный экземпляр.
NSLog(@"number of children:%i", [self.mainContainerExtension.childViewControllers count]);
Возвращает 0, хотя должно быть 3, поэтому я знаю, что это не дает мне правильных результатов.Я что-то упускаю?
Редактировать: Я знаю, что это не дает мне правильный экземпляр, потому что в viewDidLoad
из MainContainerViewController
у меня есть это:
- (void)viewDidLoad
{
appDelegate.notesViewController=[[NotesViewController alloc] init];
appDelegate.notesViewController.mainContainer=self;
[self addChildViewController: appDelegate.notesViewController];
}
Каждый NotesViewController
имеет свойство типа MainContainerViewController
, поэтому у меня всегда есть способ доступа к MainContainerViewController
из NotesViewControllers
.Но я только что узнал о категориях и расширениях, и я подумал, что может быть проще реализовать категорию, которая дает мне доступ к представлению контейнера из любого вида, а не иметь свойство на каждом контроллере представления.Это мой первый раз, так что я уверен, что я делаю что-то не так с моей реализацией категории, просто не уверен, что это такое.