Я застрял со следующим. В программе я пытаюсь установить связь между различными классами (View Controllers с файлами NIB, вложенными в приложение TabBar и т. Д.). Я хочу вызвать метод OMFG в классе с именем ProductViewDetailController. Этот класс является UIViewController (SplitViewDelegate). Он загружается программно.
В любом случае, я пытался сделать правильный вызов этому контроллеру, и я предложил 2 решения. Один из них - объявление productviewdetailcontroller в файле .h и .m вызывающего, создание IBOutlet, связывание его в компоновщике интерфейса и прямой вызов по строке
[productDetailController OMFG];
Когда я вызываю этот метод, он вызывает правильный метод в ProductViewDetailController, но экземпляр этого viewcontroller отличается от того, который я программно могу получить с помощью этого кода:
for (UIViewController *controller in self.tabBarController.viewControllers) {
NSLog(@"%@", [controller class]);
if ([controller isKindOfClass:[UISplitViewController class]]) {
UISplitViewController *cell = (UISplitViewController *)controller;
for (UIViewController *controller2 in cell.viewControllers) {
NSLog(@"%@", [controller2 class]);
if ([controller2 isKindOfClass:[ProductViewDetailController class]]) {
[controller2 OMFG];
}
}
}
Какой из них мне следует использовать и почему?
edit: Когда я пытаюсь добавить SubView к обоим viewcontrollers, тот, для которого вызывается [controller2 OMFG]; фактически показывает недавно добавленное представление, где [productDetailController OMFG]; не показывает недавно добавленное представление ... Почему это? Есть ли более короткий (и более изящный) способ получить доступ к нужному ViewController?