Преобразование UIViewController в UIView - PullRequest
0 голосов
/ 09 января 2012

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

Я хочу изменить то, как он работает, и вместо того, чтобы нажимать на новый ViewController из моего текущего viewcontroller, я бы просто хотел показать этот UIViewController внутри UIView на текущем экране, который обычно запускает новый UIViewController.

Это трудно объяснить.

UIVC_A помещает UIVC_B в NavController.

Вместо того, чтобы UIVC_B помещался в NavController.

Я бы предпочел создать UIView в UIVC_A и сделать так, чтобы UIVC_B отображался внутри него как подпредставление UIVC_A.

Что бы мне нужно было сделать / изменить, чтобы все это работало.

Я пытался

CVC *cv = [[CVC alloc] init];    
UIView * aView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 600, 600)];
aView.backgroundColor = [UIColor blueColor];
[aView addSubview:cv.view];
[self.view addSubview:aView];

Но это не сработало.

CVC является UIViewController.

Спасибо, -Кода

Ответы [ 2 ]

1 голос
/ 10 января 2012

Добавьте эту функцию к вашему контроллеру CVC

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

и попробуйте с этим кодом

CVC *cv = [[CVC alloc] initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    
UIView * aView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 600, 600)];
aView.backgroundColor = [UIColor blueColor];
[aView addSubview:cv.view];
[self.view addSubview:aView];

этот код работает нормально для меня, я думаю, что вы тоже, удачи!!.

0 голосов
/ 09 января 2012

Это не сработало, потому что xib-файл CVC еще не разархивирован. Его иерархия представлений доступна для использования после загрузки (обратный вызов -viewDidLoad).

Что вам нужно сделать, это программно загрузить перо и использовать его содержимое:

NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CVC" owner:nil options:nil]; // will return the whole view tree with the CVC's view as it's 0 object
UIView *cvcView = [topLevelObjects objectAtIndex:0];

и продолжайте, как вы сделали с представлением.

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