【问题标题】:viewWillAppear not called in subordinate viewviewWillAppear 未在从属视图中调用
【发布时间】:2014-03-18 04:48:04
【问题描述】:

我有一个UIViewController,它从笔尖加载子视图并将其添加到其视图层次结构中的子视图。现在这在 iPhone 故事板上一切正常,但在 iPad 中,虽然我确实看到了视图,但由于 viewWillAppear 不被称为 UIImageView,视图上的视图未初始化。

这是来自主视图控制器(加载子视图的那个)的代码

SubViewController *controller = [[SubViewController alloc] init];
NSArray *bundle = [[NSBundle mainBundle] loadNibNamed:@"x"] owner:controller options:nil];
UIView *subView = bundle[0];
[self addChildViewController:controller];

if (isPhone)
{
    CGRect frame;
    frame.origin.x = 0;
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;
    view.frame = frame;
    [self.scrollView addSubview:view];
 }
 else
 {
     view.frame = self.viewSlot.frame;
     [self.viewSlot addSubview:view];
 }

唯一的区别是在 iPhone 上它被添加到 UIScrollView 而在 iPad 上它被添加到 UIView

viewSlotscrollView 都是正确初始化和工作的插座。即使在 iPad 上,我也确实看到了我的视图(我已经更改了它的背景颜色),它只是没有运行的初始化 (viewWillAppear)。

【问题讨论】:

  • 把你的相关代码放在这里:)
  • 你的意思是说你正在添加一个'viewcontroller.view'作为其他视图控制器的子视图?
  • 我们来读茶叶
  • 正如其他人所说,您需要发布相关代码。鉴于您声称要添加视图(而不是视图控制器),神秘的部分实际上是 viewWillAppear 在 iPhone 上被调用,而不是它没有在 iPad 上被调用。
  • 伙计们,你是对的,这个问题是半熟的。我已经添加了一些代码,希望现在可以了。

标签: ios ipad uiviewcontroller


【解决方案1】:

在玩了一会儿之后,我终于明白了这一点。首先,我选择以不同的方式初始化控制器:

SubViewController *controller = [[SubViewController alloc] initWithNibName:[@"X" stringByAppendingString:idiom] bundle:nil];

我有一个异常表明问题:view 出口没有设置。这个故事的教训:不要只是 alloc - init 一个控制器,使用 initWithNibName 初始化程序。奇怪的是,由于 iPhone/iPad 之间存在一些尚未发现的差异,早期的方法仍然适用于 iPhone。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 2012-02-19
    • 1970-01-01
    • 2018-12-07
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多