instantiateInitialViewController не загружает UIViewController UIView - PullRequest
0 голосов
/ 18 января 2020

Я столкнулся с интересным поведением, которое у меня пока нет никаких объяснений, но я уверен, что вы уже знаете его.

Я программно загружаю StoryBoard UIViewController, и мне нужно удалить элемент TabBar из UITabBarController внутри childViewController, расположенного в v c

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"StoryboardiPhone" bundle:nil];
UIViewController *vc = [sb instantiateInitialViewController];
// now we will find the UITabBarController
UITabBarController *tbC = (UITabBarController *)[vc.childViewControllers objectAtIndex:0];
// and finally we remove the UIViewController Code Selection which is index 3
NSMutableArray *viewControllers = (NSMutableArray*) tbC.viewControllers;
[viewControllers removeObjectAtIndex:3];
[tbC setViewControllers:viewControllers];

Интересно, что приведенный выше код не работает и создает sh при попытке доступа к UITabBarController. UITabBarController находится внутри массива childViewController в v c (UIViewController).

Решение, которое я нашел, заключается в простом доступе к UIView из v c, и после этого я могу получить доступ к childViewControllers.

   UIView *view = vc.view;

     // now we will find the UITabBarController
     UITabBarController *tbC = (UITabBarController *)[vc.childViewControllers objectAtIndex:0];
     // and finally we remove the UIViewController Code Selection which is index 3
      NSMutableArray *viewControllers = (NSMutableArray*) tbC.viewControllers;
     [viewControllers removeObjectAtIndex:3];
     [tbC setViewControllers:viewControllers];

Знаете ли вы, зачем мне нужен доступ к UIView из v c, чтобы получить доступ к childViewControllers v c? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...