我正在尝试在按下某个区域时更改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内部调用该函数。
答案 0 :(得分:1)
发布来自班级(图片?)的通知,决定是否要显示新的视图控制器。在能够执行推送的现有视图控制器中侦听该通知。
答案 1 :(得分:0)
Phillip Mills是对的。您还可以使用委托模式:
为应该能够执行所需操作的对象创建协议:
@protocol YourImageDelegate -(void)touchUpInsideArea; @end
将此方法添加到视图控制器:
-(void)touchUpInsideArea { [self openDrawer]; }
设置视图控制器以符合协议:
@interface YourViewController : UIViewController
不要忘记将协议包含在两个文件中:视图控制器类和图像类。