从UIImage更改ViewController

时间:2013-12-08 19:54:15

标签: ios objective-c uiimage viewcontroller

我正在尝试在按下某个区域时更改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内部,但我无法从Image内部调用该函数。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

    @protocol YourImageDelegate 
      -(void)touchUpInsideArea;
    @end
  2. 将此方法添加到视图控制器:

    -(void)touchUpInsideArea {
      [self openDrawer];
    }
  3. 设置视图控制器以符合协议:

    @interface YourViewController : UIViewController 
  4. 不要忘记将协议包含在两个文件中:视图控制器类和图像类。