我有以下情况:
SecondViewController
位于FirstViewController
内。现在,我想向FirstViewController
添加另一个子类,但是从secondViewController
类添加,如图像所示:
我一直在寻找,我不认为这是可能的。我已经尝试实例化FirstViewController,访问“view to subview”并添加为子视图,但这不起作用:
FirstViewController *viewController = [[FirstViewController alloc] init];
[self.view addSubview:[viewController viewToAddAsSubView]];
任何提示/解决方案?
谢谢!
答案 0 :(得分:3)
使用NSNotificationCenter实际上是可行的。示例如下:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(METHOD:) name:@"LISTEN_TO_VIEW_2" object:nil];
上面的代码应放在视图1中,以“监听”视图2,向其发送通知,告知您应该执行视图1中的方法,以便在视图1中添加/编辑您想要的任何内容。
[[NSNotificationCenter defaultCenter] postNotificationName:@"LISTEN_TO_VIEW_2" object:nil];
上面的代码会将通知发送到视图1.然后在视图1中,你将有一个像这样的方法:
-(void)METHOD:(id)sender {
//do something here
}
答案 1 :(得分:0)
一种可能的方法是使用SecondViewController的视图的superView。这是一种非常直接的方式。
[[self.view superview] insertSubview:theView aboveSubview:self.view];
另一种方法是使用委托。您可以在SecondViewController中声明委托,如
@protocol SecondViewControllerDelegate : NSObject
{
- (void)requestInsertView:(UIView*)view aboveView:(UIView*)baseView;
}
@interface SecondViewController <...>
@property (nonatomic, assign) id<SecondViewControllerDelegate>superViewDelegate;
@end;
修改FirstViewController的声明以实现SecondViewControllerDelegate
@interface FirstViewController <SecondViewControllerDelegate, ...>
@implement FirstViewController
- (void)requestInsertView:(UIView*)view aboveView:(UIView*)baseView
{
[self.view insertView:view aboveSubview:baseView];
}
@end;
创建SecondViewController后,将其superViewDelegate设置为FirstViewController的实例。
在你需要从SecondViewController添加视图的地方,你可以调用
[self.superViewDelegate requestInsertView:view aboveView:self.view];