2012-12-14 41 views
2

我创建了一个自定义的UIViewController类,它在运行时创建一个ScrollView,并将其加载到视图中。在我的自定义UIViewController的构造函数中查看代码。ViewDidLoad没有被我的自定义的UIViewController调用

 initControl(id, canEdit); 

     _controllers = new NSMutableArray(0); //required to keep view controllers around 

     _scrollView = new UIScrollView(); 
     _scrollView.BackgroundColor = UIColor.Green; 
     this.View = _scrollView; 

ViewDidAppear和ViewWillAppear被正常调用。

ViewDidLoad没有被调用,我不知道为什么视图显示在屏幕上很好。

任何想法?

回答

2

访问self.view

实例时被调用时的viewDidLoad中方法:

1)

- (id) init { 
     self = [super init]; 
     if (self) 
     { 
      ... 
      [self.view addSubview: self.toolbar]; 
     } 
} 

2)

viewContrl = [[MyViewController alloc] init]; 
viewContrl.view = webTopView; 

3)

viewContrl = [[MyViewController alloc] init]; 
[viewContrl.view addSubview: webTopView]; 
+0

谢谢!我没有意识到,如果你自己设置视图对象,它不起作用。 – Zoyt

0

当您分配视图时会调用ViewDidLoad。因此,如果您只分配一次&的视图,则每次只使用addSubview添加视图,然后仅调用第一次。如果你想在每次添加它时调用它,那么你需要每次分配它。如果它已被分配,也可以在分配它之前通过释放视图来处理内存管理。 另一种方法是创建一个包含您想要执行的操作的方法&在addSubview之后调用它。 它可以解决你的问题,如果你有任何疑问,然后随时问我。

相关问题