2013-12-08 10 views
0

Я пытаюсь изменить ViewController, когда нажата область в pic. Я попытался сделать это:Изменение ViewController из UIImage

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

} 

но self.navigationController не существует, это понятно, но я не могу найти способ, чтобы получить текущую ViewController с в Image

Я попытался положить его в другом классе, делегирование с 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

Опубликовать уведомление от класса (изображения?), Которое решит, что он хочет отобразить новый контроллер представления. Слушайте это уведомление в существующем контроллере представлений, который способен делать push.

0

Филлип Миллс прав. Можно также использовать шаблон делегата:

  1. Создать протокол для объектов, которые должны быть в состоянии выполнить нужное действие:

    @protocol YourImageDelegate 
        -(void)touchUpInsideArea; 
    @end
  2. Добавить этот метод в контроллере представления:

    -(void)touchUpInsideArea { 
        [self openDrawer]; 
    }
  3. Настройте контроллер своего вида, чтобы он соответствовал протоколу:

    @interface YourViewController : UIViewController

И не забудьте указать свой протокол в обоих файлах: класс контроллера представления и класс изображения.

Смежные вопросы