Objective c 通过子视图ios的iAction更改superview的子视图
我试图在这里找到一个解决方案,但无法,基本上我有一个交互式子视图,我需要从子视图中切换到一个新的交互式子视图。我可以在主视图中使用iAction轻松更改子视图,但在子视图中更改视图失败。这是密码。。。这应该让我更清楚地知道我要完成什么 主视图控制器的in.hObjective c 通过子视图ios的iAction更改superview的子视图,objective-c,ios,ipad,uiviewcontroller,Objective C,Ios,Ipad,Uiviewcontroller,我试图在这里找到一个解决方案,但无法,基本上我有一个交互式子视图,我需要从子视图中切换到一个新的交互式子视图。我可以在主视图中使用iAction轻松更改子视图,但在子视图中更改视图失败。这是密码。。。这应该让我更清楚地知道我要完成什么 主视图控制器的in.h @interface MainViewController : UIViewController { IBOutlet OneViewController *oneviewController; IBOutlet TwoVi
@interface MainViewController : UIViewController {
IBOutlet OneViewController *oneviewController;
IBOutlet TwoViewController *twoViewController;
}
-(IBAction)goToView;
@property (nonatomic, retain) IBOutlet OneViewController *oneviewController;
@property (nonatomic, retain) IBOutlet TwoViewController *twoViewController;
@end
#import "MainViewController"
...
[MainViewController.view addSubview:twoViewController.view]; ...
英寸
好的,这一切都很好,我能够加载带有xib的两个ViewController,以及它们的所有“按钮工作”等…但是当我尝试 OneViewController的英寸数
@interface MainViewController : UIViewController {
IBOutlet OneViewController *oneviewController;
IBOutlet TwoViewController *twoViewController;
}
-(IBAction)goToView;
@property (nonatomic, retain) IBOutlet OneViewController *oneviewController;
@property (nonatomic, retain) IBOutlet TwoViewController *twoViewController;
@end
#import "MainViewController"
...
[MainViewController.view addSubview:twoViewController.view]; ...
这不起作用,我尝试了多种方法,将twoViewController添加到oneViewController的.h中,但它崩溃了。。。我对这一切还很陌生,所以很可能我忽略了显而易见的东西。谢谢你的帮助
我也在OneViewController的.m中尝试过这个
@interface MainViewController : UIViewController {
IBOutlet OneViewController *oneviewController;
IBOutlet TwoViewController *twoViewController;
}
-(IBAction)goToView;
@property (nonatomic, retain) IBOutlet OneViewController *oneviewController;
@property (nonatomic, retain) IBOutlet TwoViewController *twoViewController;
@end
#import "MainViewController"
...
[MainViewController.view addSubview:twoViewController.view]; ...
但它还是崩溃了。。。虽然建造成功了
MainViewController*mySuperView=(MainViewController*)self.view.superview;
TwoViewController*TwoViewController;
[mySuperView.view addSubview:twoViewController.view]代码>此操作在错误的位置执行。如果您试图将子视图添加到MainViewController中,则应该在MainViewController.m中真正处理该问题。您的电话是:
[MainViewController.view addSubview:twoViewController.view]
但是MainViewController.view是视图的静态实例。如果要保持原样,并假设OneViewController已经是MainViewController上的子视图,则应执行以下操作:
UIView*main=[OneViewController.view superview];
[main addSubview:twoViewController.view]
这是相当危险的,因为你不能保证有一个超级视图。我只需要在MainViewController中处理所有这些。除非有MainViewController的实例,否则任何控制器都无权将子视图添加到另一个控制器。以下代码正常工作,但它给了我1个警告
在我的子视图中,OneViewController.m(在iAction下)
在我的MainViewController.m中
-(无效)重置子视图{
[self.view addSubview:twoViewController.view];
}
好的,那么如何告诉MainViewController从子视图中的iAction更改视图?我尝试了添加到问题中的另一个选项,但仍然崩溃