Я борюсь с subviews, у которых есть свой UIViewControllers
. У меня есть UIViewController
с видом (светло-розовый) и двумя кнопками на toolbar
. Я хочу, чтобы синий вид отображался при нажатии первой кнопки и нажатии желтого изображения, отображаемого с помощью второй кнопки. Должно быть легко, если я просто хочу отобразить представление. Но синий вид будет содержать таблицу, поэтому ей нужен собственный контроллер. Это был мой первый урок. Я начал с этот вопрос SO, где я узнал, что мне нужен контроллер для таблицы.
Итак, я собираюсь сделать резервную копию и сделать здесь несколько детских шагов. Ниже приведено изображение простой начальной точки с моей утилитой ViewController
(главный контроллер представления) и двумя другими контроллерами (синий и желтый). Представьте себе, что при первом отображении утилиты ViewController
(основной вид) отображается синий (по умолчанию) вид, где расположен розовый вид. Пользователи смогут щелкнуть две кнопки, чтобы вернуться назад и вперед, и розовый вид НИКОГДА не будет отображаться. Я просто хочу, чтобы синий вид шел туда, где находится розовый вид, а желтый вид - туда, где находится розовый вид. Надеюсь, это имеет смысл.
Я пытаюсь использовать addChildViewController
. Из того, что я видел, есть два способа сделать это: Container View в storyboard
или addChildViewController
программно. Я хочу сделать это программно. Я не хочу использовать NavigationController
или панель вкладок. Я просто хочу добавить контроллеры и перетащить правильный вид в розовое изображение при нажатии соответствующей кнопки.
Ниже приведен код, который у меня есть. Все, что я хочу сделать, это показать синий вид, где находится розовый вид. Из того, что я видел, я мог бы просто addChildViewController
и addSubView. Этот код не делает этого для меня. Моя путаница становится лучше меня. Может ли кто-нибудь помочь мне отобразить синий вид, где находится розовый вид?
Этот код не предназначен для выполнения каких-либо других действий, кроме отображения голубого представления в viewDidLoad.
IDUtilityViewController.h
#import <UIKit/UIKit.h>
@interface IDUtilityViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIView *utilityView;
@end
IDUtilityViewController.m
#import "IDUtilityViewController.h"
#import "IDAboutViewController.h"
@interface IDUtilityViewController ()
@property (nonatomic, strong) IDAboutViewController *aboutVC;
@end
@implementation IDUtilityViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.aboutVC = [[IDAboutViewController alloc]initWithNibName:@"AboutVC" bundle:nil];
[self addChildViewController:self.aboutVC];
[self.aboutVC didMoveToParentViewController:self];
[self.utilityView addSubview:self.aboutVC.aboutView];
}
@end
-------------------------- EDIT ----------------- -------------
Self.aboutVC.aboutView равен нулю. Но я подключил его в storyboard
. Мне все еще нужно создать его экземпляр?