【问题标题】:How to add subView to another view from third view?如何将 subView 从第三个视图添加到另一个视图?
【发布时间】:2012-04-18 00:53:40
【问题描述】:

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

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

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

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

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

更新 - 我在尝试别的东西。 我在我的主类中创建了一个方法,然后从菜单中调用它。 但它仍然有效 - 我 NSLOG 该方法及其完美调用。 (当我从类内部调用该方法时,它的工作..)

现在怎么办?!我从来没有遇到过这种问题...

【问题讨论】:

  • 您没有将“主要”添加到屏幕

标签: iphone objective-c xcode uiview methods


【解决方案1】:

我想这会有所帮助:

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

如果有帮助请标记:)

【讨论】:

    【解决方案2】:

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

    为此,您需要保留OpertunityViewController 的引用对象,可能是Menu,并且您需要从Menu 调用OpertunityViewController 的方法,然后将子视图添加到您的OpertunityViewController

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

    希望这会有所帮助。

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

    【讨论】:

      【解决方案3】:

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

      -(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];
      }
      

      【讨论】:

      • 分配控制器的新实例无济于事,因为创建的新实例与已存在的控制器没有任何链接。
      • @DimplePanchal 我不知道你的意思。您的意思是新实例与当前控制器没有任何链接?当然不是,但是当前控制器的视图将新实例视图作为子视图。那么,有什么问题呢?泄漏还是崩溃?
      • 查看分配新实例实际上并不是应用程序窗口/导航控制器中已经存在的实例。即使你调用 addSubview 到一个视图控制器而没有在应用程序窗口中加载它,它也不能添加任何子视图..
      【解决方案4】:

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

      【讨论】:

      • 取另一个视图并将其添加到您的 main.handlerview 中。这样您就知道错误在哪里了?
      猜你喜欢
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多