2013-10-06 4 views
0

My TabBarViewController добавил слишком много уровней ViewControllers/Views. Я должен идти, как это в - (ничтожной) viewDidAppear: анимированные, чтобы настроить правильный вид Я хочу:iOS: поиск имени класса uiviewcontroller из представления

[[[[[self.view.subviews[0] subviews][0] subviews][0] subviews][0] subviews][0] setAutoresizingMask:UIViewAutoresizingFlexibleHeight]; 

Этот код некрасиво, и никто не может понять.

Я хотел найти соответствующий контроллер/просмотр представления и настроить его там. Я пробовал

[[[[self.view.subviews[0] subviews][0] subviews][0] subviews][0] subviews][0] class] 

Однако, он возвращает UIView, что совсем не помогло мне.

EDIT: View hierarchy

Я пытаюсь получить доступ к UIViewControllerWrapperView, чтобы изменить его свойство автоматического изменения. Однако, согласно этому сообщению: What is UIViewControllerWrapperView? Кажется, он недоступен. Я все еще борюсь за то, как найти правильный (или ближайший) контроллер просмотра, чтобы изменить его свойство, чтобы у меня не было или менее [subview objectAtIndex: 0].

То, что я хотел сделать, это

+0

Я просто не понимаю, чего вы пытаетесь достичь. – Zen

+0

@Unheilig Привет, я отредактировал сообщение и разместил скриншот. Надеюсь, теперь это может иметь для вас какое-то значение. – nigong

ответ

0

Я думаю, что никто не понимает его, потому что, как вы делаете это действительно нестандартное и плохая идея. Какой вид вы ищете? Вы не должны находить это так. Стандартный способ - использовать XIB или Storyboard и подключить представление оттуда к вашему ViewController с помощью IBOutlet. Тогда вы просто ссылаетесь на него таким образом.

Вы можете посмотреть this video о том, как соединить вещи с раскадными стенами, если вы не знаете, как это сделать.

Если вы программно добавляете это представление, вы должны просто создать свойство в своем ViewController и сохранить ссылку на свой вид в этом свойстве. Пример:

@property (nonatomic, strong) YourViewClassType *fancyView; 

тогда, когда вы его создаете, просто установите fancyView для вашего вида, который вы создали.

+0

Спасибо за ваш ответ. Но я получаю этот проект от кого-то другого, и я знаю очень мусор об этом. Они использовали раскадровку, но я не могу изменить ее гибкую высоту. Я не знаю почему. – nigong

+0

Вам не нужно его менять, но вы можете подключить этот вид из раскадровки к классу контроллера вида. Затем вы можете изменить его в своем контроллере. – HalR

Смежные вопросы