如何从第三个视图将subView添加到另一个视图?

时间:2012-04-04 10:06:53

标签: iphone objective-c xcode uiview methods

我很容易理解我遇到的问题。

我有一个名为“菜单”的视图 - 它有几个按钮。 我有另一个名为“Main”的视图 - 需要显示菜单选择的视图。 最后一个我认为我想在主视图中看到。

我尝试用这段代码解决这个问题 -

-(IBAction)opertunity:(id)sender{
OpertunityViewController *temp = [[OpertunityViewController alloc]initWithNibName:@"OpertunityViewController" bundle:nil];
MainViewController *main = [[MainViewController alloc]init];
[main.handlerView addSubview:temp.view];
}

但它根本不起作用..我记得我过去做了很多次但是在我的项目中得不到答案......很奇怪/:

更新 - 我正在尝试别的东西。 我在我的主课上制作了一个方法,我从菜单中调用它。 但它仍然有效 - 而且我NSLOG的方法和它被称为完美。 (当我从类中调用方法时,它正在工作..)

现在怎么样?!我从未遇到过这种问题......

4 个答案:

答案 0 :(得分:0)

我不确切,但我猜这可能是你的问题。你把框架设置为视图。

答案 1 :(得分:0)

也许您应该将主视图添加到窗口或当前视图中。例如:

-(IBAction)opertunity:(id)sender{
    OpertunityViewController *temp = [[OpertunityViewController alloc]initWithNibName:@"OpertunityViewController" bundle:nil];
    MainViewController *main = [[MainViewController alloc]init];
    [main.handlerView addSubview:temp.view];
    [self.view addSubview:main.handlerView];
}

答案 2 :(得分:0)

由于您正在分配和创建OpertunityViewController的新对象,因此您的视图不会添加到该viewcontroller。

为此,您需要保留OpertunityViewController的参考对象可能为Menu,而Menu需要调用OpertunityViewController的方法,然后再添加子视图到你的OpertunityViewController

否则,您可以为此功能创建委托。

希望这会有所帮助。

此外,如果您使用的是导航控制器,则可以从堆栈导航控制器获取viewcontroller,然后相应地添加子视图。请注意,您需要从堆栈中获取正确的viewcontroller,并确保在该时间点添加的视图控制器的顺序和数量没有变化。仅当您的导航流程已修复或您需要将子视图添加到以前的视图控制器时,这才有用。

答案 3 :(得分:0)

这有助于我想:

-(IBAction)opertunity:(id)sender {
   OpertunityViewController *temp = [[OpertunityViewController alloc] init];
   MainViewController *main = [[MainViewController alloc]init];
   [main.view addSubview:temp.view];
}

请标记是否有帮助:)