【问题标题】:How does a UIView know about an added subview's UIViewController?UIView 如何知道添加的子视图的 UIViewController?
【发布时间】:2009-08-14 07:27:23
【问题描述】:

在说的情况下

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
...
[window addSubview:gameController.view];
...
}

gameController 的视图如何保持与 gameController 的关联?我已经达到了所有 Debugger 变量的峰值,除了它属于视图控制器的布尔标志之外,我没有看到任何关联。因此视图被传递到视图层次结构(不一定必须在窗口之外),但 gameController 将获得诸如 shouldAutorotateToInterfaceOrientation 之类的事件。如果不是作为从 gameController.view 传递出来的 UIView 中的一些隐藏引用,那么它在哪里被跟踪

UIView *tmp = gameController.view;
[window addSubview:tmp];

很明显gameController知道tmp,但是在那个代码之后窗口怎么知道gameController呢?

【问题讨论】:

    标签: objective-c uikit uiview uiviewcontroller


    【解决方案1】:

    UIViewController 是 UIResponder 的后代,并被插入到视图和该视图的父视图之间的响应者链中。因此,在由 UIViewController 管理的视图上调用 nextResponder 将返回 UIViewController 的所述实例。

    这就是诸如shouldAutorotateToInterfaceOrientation: 之类的事件如何通过 UIResponder 实例的层次结构向上传递的。可以在figure 3.1 in the iPhone Application Programming Guide 中看到显示这一点的图表。

    【讨论】:

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