ire*_*emk 2 iphone objective-c uiviewcontroller addsubview ios
我快要疯了:
GolOlurActionViewController *golOlur = [[GolOlurActionViewController alloc] init];
[self.view addSubview:golOlur.view];
Run Code Online (Sandbox Code Playgroud)
我有上面的代码,我在IBACtion里面调用它ViewController.GolOlurActionViewController是ViewController大家都可以猜到.
当流程开始时,会调用golOlur viewDidLoad和viewDidAppear方法,但不会显示视图.
我已经尝试了所有我知道但无法解决的问题.
Rob*_*Rob 10
addSubview如果你的意图是在视图之间转换,你真的不应该使用.如果这样做,则不会收到轮换事件,因为您允许视图控制器层次结构与视图层次结构不同步.您应该addSubview仅用于向视图添加真实的子视图(例如,a UILabel,a UIImageView,a UIButton等,或子视图,如果进行适当的视图控制器包含等).addSubview在视图之间转换的使用代表了视图控制器和视图之间的基本混淆.
正确管理视图的关键是确保视图控制器层次结构与视图层次结构同步.最简单的方法是在视图控制器之间进行转换,让它们处理视图的呈现.因此,如果您使用的是NIB,通常是:
GolOlurActionViewController *golOlur = [[GolOlurActionViewController alloc] initWithNibName:nil bundle:nil];
[self presentViewController:golOlur animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
或者,带导航控制器的NIB:
GolOlurActionViewController *golOlur = [[GolOlurActionViewController alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:golOlur animated:YES];
Run Code Online (Sandbox Code Playgroud)
或者,如果你正在使用故事板(那么,如果你使用故事板,你可能会使用segues,并且不需要任何这些,但只是为了完整性):
GolOlurActionViewController *golOlur = [self.storyboard instantiateViewControllerWithIdentifier:@"GolOlurActionView"];
[self presentViewController:golOlur animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
如果您的故事板使用导航控制器:
GolOlurActionViewController *golOlur = [self.storyboard instantiateViewControllerWithIdentifier:@"GolOlurActionView"];
[self.navigationController pushViewController:pushViewController:golOlur animated:YES];
Run Code Online (Sandbox Code Playgroud)
在你试图做控制器遏制万一,让我们知道,因为这是略有不同(无需对电话addChildViewController和didMoveToParentViewController),但如果你正在做的视图之间的基本转变,您的控制器的正确初始化和后续调用presentViewController或者pushViewController应该为你做.
更新:
暂时不说,如果你使用的是故事板(我不认为你,但以防万一),而不是instantiateViewControllerWithIdentifier,我可能会建议你在故事板上定义一个segue,在Interface Builder中为它提供一个标识符字符串,然后使用以下代码转换到下一个场景:
[self performSegueWithIdentifier:@"yourIdentifier" sender:self];
Run Code Online (Sandbox Code Playgroud)
如果你这样做,它会为你实例化你的控制器,整个应用程序的流程将在故事板中准确地表示出来.
| 归档时间: |
|
| 查看次数: |
12222 次 |
| 最近记录: |