Ios 如何将UIView中的事件控制传递给Iphone中的UIView控制器?

Ios 如何将UIView中的事件控制传递给Iphone中的UIView控制器?,ios,iphone,objective-c,uiview,Ios,Iphone,Objective C,Uiview,场景: 我有一个日历控件作为UIview,当我单击视图的日期按钮时,我希望导航到其他UIview控制器,但当我使用: HomeView *scrhome=[[HomeView alloc]init]; [self presentViewController:scrhome animated:YES completion:nil]; 它给出了一个错误: HomeView不在内存堆栈中 提前感谢。presentViewController:希望将viewcontroller作为一个参数,您正在此处

场景:

我有一个日历控件作为UIview,当我单击视图的日期按钮时,我希望导航到其他UIview控制器,但当我使用:

HomeView *scrhome=[[HomeView alloc]init];
[self presentViewController:scrhome animated:YES completion:nil];
它给出了一个错误: HomeView不在内存堆栈中


提前感谢。

presentViewController:希望将viewcontroller作为一个参数,您正在此处传递一个视图。为视图设置一个控制器,并将其传递到presentViewController:animated:

由于schrome是UIView而不是视图控制器,因此无法传递参数,因为所需类型是uiviewcontroller。您可以在控制器内使用此uiview,并且该viewcontroller的对象可以作为参数传递。

您可以使用观察者模式

请参见,您可以使用NSNotificationCenter创建观察者:

[[NSNotificationCenter defaultCenter]addObserver:自选择器:@selector(notify)name:@“事件”对象:nil]//1

将其放在视图控制器中

以及视图控制器中的选择器,如:

-(void)notify 
{
    //2
    HomeView *scrhome=[[HomeView alloc]init];
    [self presentViewController:scrhome animated:YES completion:nil];
}
在您的视图中,在希望引发事件的条件下编写:
[[NSNotificationCenter defaultCenter]postNotificationName:@“事件”对象:nil]//3

你准备好出发了

您可以使用object:yourobject代替nil@//1

如果您想获得一些属性来处理


它对我来说很好。

HomeView不是视图,而是视图控制器。
id=sender;