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

    [self addChildViewController:viewController];
viewController.view.frame = self.view.frame;
[self.view addSubview:viewController.view];
viewController.view.alpha = 0;
[viewController didMoveToParentViewController:self];

[UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^
 {
     viewController.view.alpha = 1;
 }
                 completion:nil];

Но второй контроллер вида не виден ... Как я могу разобраться в этом?

ios
0
user3600801 25 Ноя 2016 в 16:06

2 ответа

Лучший ответ

Должно быть, вы ошиблись в коде, я написал для этого демонстрацию: я пишу два контроллера следующим образом:

В vc1:

#import "ViewController.h"
#import "ViewController2.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    [self initUI];
}

#pragma mark - init

- (void)initUI {

self.view.backgroundColor = [UIColor whiteColor];

A) If use storyboard, init vc2 like this :
 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
 ViewController2 *vc2 = [sb instantiateViewControllerWithIdentifier:@"ViewController2"];

B)If use code ,init vc2 like this:
ViewController2 *vc2 = [[ViewController2 alloc] init];


[self addChildViewController:vc2];
vc2.view.frame = self.view.bounds
[self.view addSubview:vc2.view];
vc2.view.alpha = 0;
[vc2 didMoveToParentViewController:self];

[UIView animateWithDuration:0.25 delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^
     {
         vc2.view.alpha = 1;
     }
                 completion:nil];
}

@end

В vc2:

#import "ViewController2.h"

@interface ViewController2 ()

@end

@implementation ViewController2

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor brownColor];

}
0
aircraft 26 Ноя 2016 в 05:42
  1. Попробуйте [parentView bringSubviewToFront:childView];

  2. Попробуйте viewController.view.frame = self.view.bounds;

  3. Проверьте, правильно ли вы создали экземпляр viewController.

0
Arpit Dongre 25 Ноя 2016 в 14:37