2015-06-30 4 views
0

Это код, используемый в главном меню, когда играть пользователь нажимает, однако, когда этот экран представлен (ViewController.m) он показывает ошибкуПопытка представить на ViewController чей взгляд не в окне иерархии

Предупреждение. Попытайтесь представить, чей взгляд не в иерархии окон!

-(IBAction)play:(id)sender 
{ 
    if(IS_IPAD) 
    { 
     ViewController *view_obj = [[ViewController alloc]initWithNibName:@"ViewController_iPad" bundle:[NSBundle mainBundle]]; 
     [self presentViewController:view_obj animated:YES completion:nil]; 

    } 
    else if ([AISGlobal isIphone5thGeneration]) 
    { 
     ViewController *view_obj = [[ViewController alloc]initWithNibName:@"ViewController_iPhone5" bundle:[NSBundle mainBundle]]; 
     [self presentViewController:view_obj animated:YES completion:nil]; 


    } 
    else 
    { 
     ViewController *view_obj = [[ViewController alloc]initWithNibName:@"ViewController_iPhone" bundle:[NSBundle mainBundle]]; 
     [self presentViewController:view_obj animated:YES completion:nil]; 

    } 

} 

В AppDelegate.m файл, он показывает это в разделе "didFinishLaunchingWithOptions;

if(IS_IPAD) 
    { 
     self.start_screen_obj = [[Start_screen alloc] initWithNibName:@"Start_screen" bundle:nil]; 
    } 
    else if ([AISGlobal isIphone5thGeneration]) 
    { 
     self.start_screen_obj = [[Start_screen alloc] initWithNibName:@"Start_screen_iphone5" bundle:nil]; 

    } 
    else 
    { 
     self.start_screen_obj = [[Start_screen alloc] initWithNibName:@"Start_screen_iphone" bundle:nil]; 
    } 

    self.start_screen_obj.view.multipleTouchEnabled = YES; 

    self.window.rootViewController = self.start_screen_obj; 

    [self.window makeKeyAndVisible]; 
+0

Ошибка объясняет, что именно происходит. Вы представляете UIViewController в иерархии представления из UIViewController, который в настоящее время не является частью иерархии представлений. Вы не разместили достаточно контекста для нас, чтобы помочь вам отладить проблему. – Tim

+0

Я запускаю метод, который не может быть представлен, из файла ViewController.m, который отображается, когда пользователь нажимает кнопку «Воспроизвести» на экране «Пуск», я не могу увидеть, где-то разместить его, если я попытаюсь сделать это, когда пользователь прессует игру, она все еще представляет ту же проблему? – Hypergater

ответ

1

Это потому, что контроллер представления представления (то есть self) не добавляется в качестве контроллера детского вида. Вы можете обойти это предупреждение, представив VC на [UIApplication sharedApplication].keyWindow.rootViewController вместо self

+0

Привет @arturdev Где я размещаю это? в Appdelegate или при вызове View после нажатия на воспроизведение? – Hypergater

+0

везде, когда вы вызываете '[self presentViewController: ...' – arturdev

3

Попробуйте написать свой код в контроллерах просмотреть viewDidAppear метод, потому что до того времени, на ваш взгляд, это просто создано не добавляется в иерархии видов.

+0

Я пробовал это, появляется такое же сообщение? – Hypergater

0

Это пример FormAlertView с помощью Swift 2,3

override func viewDidAppear(_ animated: Bool) { 
    var loginTextField: UITextField? 
    var passwordTextField: UITextField? 
    let alertController = UIAlertController(title: "UIAlertController", message: "UIAlertController With TextField", preferredStyle: .alert) 
    let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in 
     print("Ok Button Pressed") 
    }) 
    let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in 
     print("Cancel Button Pressed") 
    } 
    alertController.addAction(ok) 
    alertController.addAction(cancel) 
    alertController.addTextField { (textField) -> Void in 
     // Enter the textfiled customization code here. 
     loginTextField = textField 
     loginTextField?.placeholder = "User ID" 
    } 
    alertController.addTextField { (textField) -> Void in 
     // Enter the textfiled customization code here. 
     passwordTextField = textField 
     passwordTextField?.placeholder = "Password" 
     //   passwordTextField?.secureTextEntry = true 
    } 

    //  present(alertController, animated: true, completion: nil) 



    //   present(alertController, animated: true, completion: nil) 

    self.present(alertController, animated: true, completion: nil) 

} 

Вы можете легко копировать вставить в проект ViewController и запустить.

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

  • Нет связанных вопросов^_^