Могу ли я иметь несколько скрытых представлений в ViewController?

Я знаю, это кажется плохим решением, но я не могу придумать или понять, как сделать что-то лучше. Что мне нужно сделать, так это меню, меню iPad, с панелью инструментов вверху и внизу и фоновым изображением. На нижней панели инструментов у меня будет 4 разные кнопки. Каждая кнопка будет создавать меню параметров в середине экрана. Одна кнопка должна отображать 3 опции (кнопки с изображениями), другая 4 опции, еще 8 опций (для этого я собираюсь использовать Scroll View и Page Control, потому что мне понадобятся 2 страницы), еще 2 опции . Я пытался использовать подпредставления, по одному подпредставлению для каждой кнопки, и мне добавили параметры в подпредставления. Когда я выбираю одну кнопку, ее подвид загружается, но когда я пытаюсь изменить его положение и размер, его кнопки пропускаются, подвид остается пустым... Теперь у меня будет 4 подвида в ViewController, но скрытых . Когда я выбираю одну кнопку, представление будет отображаться, а другие представления будут скрыты. Это означает, что все подвиды будут загружены. Это удобно? Этот метод требует много памяти? Если у кого-то есть другое и лучшее решение, я буду очень признателен... Спасибо


person user1600801    schedule 23.08.2012    source источник


Ответы (1)


Да, у вас может быть несколько скрытых подпредставлений в контроллере представления, но я не думаю, что это самый практичный способ.

Вы упомянули, что меню должны появляться в центре экрана. В этом случае я думаю, что лучшим подходом было бы создание отдельного контроллера представления для каждого из ваших меню, а затем ваш основной контроллер представления представлял бы их модально, используя свойство modalPresentationStyle контроллера представления. Делая это, вы экономите массу времени, поскольку вам не нужно писать код, который проверяет, какие представления скрыты, а какие нет; вы позволяете API выполнять свою работу, поэтому вам нужно будет реализовать в лучшем случае несколько методов, таких как dismissModalViewControllerAnimated:.

Ознакомьтесь с документацией Apple о UIViewController. , а точнее раздел под названием «Представление содержимого другого контроллера представления».

person Community    schedule 23.08.2012
comment
Большое Вам спасибо. Итак, вы говорите мне, что я должен сделать один XIB для каждого меню, и этот XIB будет загружен внутри моего основного контроллера представления? Как sub-viewController? - person user1600801; 23.08.2012
comment
Да, каждое меню будет использовать свой собственный xib, и, соответственно, каждое меню будет иметь свой собственный контроллер представления, который будет загружать этот xib в соответствующем методе инициализации. Затем ваше нижнее меню загрузит соответствующий контроллер представления, который, в свою очередь, загрузит свой xib. - person ; 23.08.2012
comment
О, спасибо, это кажется лучшим решением. Только один, возможно, глупый вопрос, может ли этот контроллер представления быть прозрачным? Потому что мне нужно, чтобы это выглядело так, как будто я просто добавляю кнопки, я имею в виду, что на экране есть фоновое изображение, которое просто может быть загромождено кнопками, а не всем subViewController - person user1600801; 23.08.2012
comment
Это должно быть возможно. Когда вы создаете xib для меню, установите их цвета фона как прозрачные; Я не помню, есть ли для этого опция в Interface Builder, но если нет, добавьте это в метод инициализации для каждого контроллера представления меню: [self.view setBackgroundColor:[UIColor clearColor]]; Я также должен отметить, что rejectModalViewController устарел, сначала не заметил этого. Apple рекомендовала вместо этого использовать rejectViewControllerAnimated:completion:. - person ; 23.08.2012
comment
О, большое спасибо. Как вы видите, я новичок... Я начну проводить некоторые исследования об отклонении ViewControllerAnimated... Спасибо за вашу помощь - person user1600801; 23.08.2012
comment
Привет. Я сделал то, что ты сказал мне. Я создаю еще один XIB и меняю его размер в IB, чтобы он покрывал только одну часть экрана (и не закрывал панели инструментов). Перетаскиваю 2 кнопки, просто для проверки. Теперь с помощью первой кнопки на панели инструментов я вызываю ViewController (код ниже), и теперь экран полностью закрыт и черный, мой новый XIB не появляется... - person user1600801; 23.08.2012
comment
-(IBAction)showFirstMenu{ MenuAllEntriesViewController *menuAE = [[MenuAllEntriesViewController alloc] init]; [menuAE setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; [самостоятельный PresentModalViewController: menuAE анимированные: YES]; } - person user1600801; 23.08.2012
comment
Привет, я уже решил эту проблему... Но мой вид покрывает весь экран и не прозрачен :/ - person user1600801; 23.08.2012
comment
Хм... если он не отображается прозрачным, я не уверен, в чем может быть проблема. Что касается того, что он занимает весь экран, попробуйте установить modalPresentationStyle контроллера представления на UIModalPresentationFormSheet и обязательно переключите presentModalViewController:animated на presentViewController:animated:completion:, так как модальный устарел. - person ; 24.08.2012