2013-12-08 77 views
0

我試圖更改視圖控制器時按下圖片中的區域。 我試着這樣做:從UIImage更改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裏面工作,但我不能從圖像裏面調用函數。

回答

1

發佈決定希望顯示新視圖控制器的類(圖像?)的通知。在能夠進行推送的現有視圖控制器中監聽該通知。

0

菲利普米爾斯是正確的。你也可以使用委託模式:

  1. 創建對象的一種協議,它應該能夠執行所需的操作:

    @protocol YourImageDelegate 
        -(void)touchUpInsideArea; 
    @end
  2. 添加這個方法到您的視圖控制器:

    -(void)touchUpInsideArea { 
        [self openDrawer]; 
    }
  3. 設置您的視圖控制器以符合協議:

    @interface YourViewController : UIViewController

而且不要忘記在兩個文件中包含你的協議:視圖控制器類和圖像類。