如何将viewController添加为子视图?

时间:2011-08-05 16:02:28

标签: iphone ios sdk

  

可能重复:
  Create a UIViewController that contain a UIViewController

我在不同的viewcontroller中有一个包含许多子视图的父视图,因为屏幕的一部分与每个视图相同,所以我在其他视图控制器nib中只创建其他屏幕的所需部分。 然后我计划当一个视图需要加载我将只是添加它像子视图并删除它切换到另一个屏幕 这很简单

viewController = []...
[self.view addSubview:viewController.view];
currentView = viewController.view;
currentView.setFrame :(aFrame); // to move to different part (all screen has a common part)

但我的问题是新视图被添加到屏幕但它始终保持在(0,0)无论我设置的框架如何。 但奇怪的是,如果我在新框架中点击屏幕的一部分,它将会像移动视图一样移动,但屏幕不会重绘。

有什么不对?请帮忙

3 个答案:

答案 0 :(得分:1)

你说:

  

我创建只需要在其他视图控制器笔尖中只需要其他屏幕的一部分

我认为问题可能与在Interface Builder中创建视图的方式有关。具体来说,如果您创建一个nib文件并选择“视图”类型,则会创建一个包含固定大小(屏幕大小)的视图的笔尖。

所以,我的建议是尝试使用“Empty”模板创建一个笔尖,然后从库中添加一个UIView。在这种情况下,您将被允许设置视图大小(在Inspector的第三个窗格中)。这可能会解决你的问题。

答案 1 :(得分:1)

这样做。

  1. 使用您想要的帧大小创建一个UIView。

    UIView * testView; //分配并设置帧大小

  2. viewController.view作为子视图添加到testView

  3. 添加考虑到该框架尺寸的testView并将其作为子视图添加到self.view

答案 2 :(得分:0)

尝试:

[currentView setNeedsDisplay];