【问题标题】:ViewDidLoad not being called with my custom UIViewController没有使用我的自定义 UIViewController 调用 ViewDidLoad
【发布时间】:2012-12-14 04:06:07
【问题描述】:

我创建了一个自定义 UIViewController 类,该类在运行时创建一个 ScrollView 并将其加载到视图中。在我的自定义 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 没有被调用,我不知道为什么,因为视图在屏幕上显示得很好。

有什么想法吗?

【问题讨论】:

    标签: objective-c ios xamarin.ios


    【解决方案1】:

    访问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];
    

    【讨论】:

    • 谢谢!我没有意识到,如果您自己设置视图对象,它就不起作用了。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多