Objective c 如何将子视图从class2添加到class1上的视图?

Objective c 如何将子视图从class2添加到class1上的视图?,objective-c,xcode4.3,Objective C,Xcode4.3,我正在尝试做一件非常简单的事情——我有一个主Xib文件用于整个应用程序,另一个Xib文件用于小视图 我希望小视图(Xib称为“additionalView.Xib”)出现在第一个Xib(“ViewController.Xib”)中 我已经在“ViewController.m”中成功地做到了这一点,但我想要更多——我想从“additionalView.m”中做到这一点 我在“additionalView.m”中创建了一个名为“openView:”的方法,它如下所示: 调试器正在调用该方法并读取

我正在尝试做一件非常简单的事情——我有一个主Xib文件用于整个应用程序,另一个Xib文件用于小视图

我希望小视图(Xib称为“additionalView.Xib”)出现在第一个Xib(“ViewController.Xib”)中

我已经在“ViewController.m”中成功地做到了这一点,但我想要更多——我想从“additionalView.m”中做到这一点

我在“additionalView.m”中创建了一个名为“openView:”的方法,它如下所示:



调试器正在调用该方法并读取行,但什么也没有发生。 无崩溃-无错误-大视图中无小视图

为什么呢

我知道最后一行可能是 把一切都搞砸了,但我不知道怎么把它放对。

试试看

    [self.view addView:view.vc];
但是,我不确定您在这里看到的结构是什么。您说您的-(iAction)openView:(id)发送方在“additionalView.m”中,但它不是主视图控制器,对吗?您需要在主控制器中执行此操作,因此基本上将openView:方法移动到您的ViewController.m

通常每个视图都需要一个单独的视图控制器来保持整洁和独立,因此additionalView.m应该是UIViewController的一个实例,您可以从主视图创建它,如下所示:

-(IBAction)openView:(id)sender

 {

 AdditionalView *vc = [[AdditionalView alloc] initWithNibName:@"additionalView"];


 [self.view vc.view];

 }
试一试

但是,我不确定您在这里看到的结构是什么。您说您的-(iAction)openView:(id)发送方在“additionalView.m”中,但它不是主视图控制器,对吗?您需要在主控制器中执行此操作,因此基本上将openView:方法移动到您的ViewController.m

通常每个视图都需要一个单独的视图控制器来保持整洁和独立,因此additionalView.m应该是UIViewController的一个实例,您可以从主视图创建它,如下所示:

-(IBAction)openView:(id)sender

 {

 AdditionalView *vc = [[AdditionalView alloc] initWithNibName:@"additionalView"];


 [self.view vc.view];

 }

您的问题是
ViewController*vc=[[ViewController alloc]init]创建一个新的视图控制器。因为它是新的,所以它不是管理显示的视图控制器层次结构中已经存在的


您的方法需要访问现有的视图控制器。这取决于应用程序的结构以及哪个对象引用了原始控制器对象。

您的问题在于
ViewController*vc=[[ViewController alloc]init]创建一个新的视图控制器。因为它是新的,所以它不是管理显示的视图控制器层次结构中已经存在的


您的方法需要访问现有的视图控制器。它如何做到这一点取决于应用程序的结构以及哪个对象引用了原始控制器对象。

您可以选择。。。首先,如果只需要视图,则不需要创建视图控制器vc。创建uiview并添加它。 选项1:按照上面的建议将ref传递给应用程序vc,然后: [appVC.view addsubview:additionalView]

这将把它添加到main

在应用程序委托中使用可称为委托的视图控制器管理器/ref,并将视图添加到当前显示视图中


希望这对您有所帮助

您可以选择。。。首先,如果只需要视图,则不需要创建视图控制器vc。创建uiview并添加它。 选项1:按照上面的建议将ref传递给应用程序vc,然后: [appVC.view addsubview:additionalView]

这将把它添加到main

在应用程序委托中使用可称为委托的视图控制器管理器/ref,并将视图添加到当前显示视图中


希望这有帮助

你是对的。但问题是我在ViewController.m中有很多行,我希望通过使用不同的类(比如“additionalView.m”)来组织一些事情。这就是为什么我想知道如何从另一个类中引用ViewController.xib。你是对的。但问题是我在ViewController.m中有很多行,我希望通过使用不同的类(比如“additionalView.m”)来组织一些事情。这就是为什么我想知道如何从另一个类中引用ViewController.xib。