Ios 从UIImage更改ViewController

Ios 从UIImage更改ViewController,ios,objective-c,uiimage,viewcontroller,Ios,Objective C,Uiimage,Viewcontroller,当按下图片中的某个区域时,我试图更改ViewController。 我试着这样做: -(void)openDrawer{ UIStoryboard *mStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *vc =[mStoryBoard instantiateViewControllerWithIdentifier:@"DrawViewCont

当按下图片中的某个区域时,我试图更改ViewController。 我试着这样做:

-(void)openDrawer{
    UIStoryboard *mStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc =[mStoryBoard instantiateViewControllerWithIdentifier:@"DrawViewController"];
    [self.navigationController pushViewController:vc animated:YES];

}
但是self.navigationController不存在,这是可以理解的,但是我找不到一种方法来获取图像中当前viewController的

我尝试将它放在另一个类中,从当前视图的viewController中进行委派

-(void) changeChangeViewToName:(NSString *)name{
    UIStoryboard *mStoryBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc =[mStoryBoard instantiateViewControllerWithIdentifier:name];
    [self.navigationController pushViewController:vc animated:YES];
}

这在viewController内部工作,但我无法从图像内部调用该函数。

发布一个来自类(图像?)的通知,该类决定要显示新的视图控制器。在现有视图控制器中侦听能够执行推送的通知。

Phillip Mills是正确的。您还可以使用委托模式:

  • 为应该能够执行所需操作的对象创建协议:

    @protocol YourImageDelegate -(void)touchUpInsideArea; @end @协议代理 -(无效)内部触碰a; @结束
  • 将此方法添加到视图控制器:

    -(void)touchUpInsideArea { [self openDrawer]; } -(无效)内部触碰a{ [自开抽屉]; }
  • 设置视图控制器以符合协议:

    @interface YourViewController : UIViewController @界面YourViewController:UIViewController
  • 不要忘记在两个文件中都包含您的协议:视图控制器类和图像类