2013-03-21 4 views
0

Я работаю с библиотекой KYCircleMenu. Вы можете найти его более here. Я также работаю с раскадровки. Я сделал класс MenuViewController, который является производным от KYCircleMenuНевозможно выполнить segue из моего класса

@interface MenuViewController : KYCircleMenu 

Следующая я реализовал свою initWithCoder, как это.

- (id)initWithCoder:(NSCoder*)aDecoder 
{ 
    NSLog(@"called"); 
    if(self = [self initWithButtonCount:kKYCCircleMenuButtonsCount 
           menuSize:kKYCircleMenuSize 
          buttonSize:kKYCircleMenuButtonSize 
       buttonImageNameFormat:kKYICircleMenuButtonImageNameFormat 
         centerButtonSize:kKYCircleMenuCenterButtonSize 
       centerButtonImageName:kKYICircleMenuCenterButton 
     centerButtonBackgroundImageName:kKYICircleMenuCenterButtonBackground]) 
    { 


    } 
    return self; 
} 

И, наконец, я реализовал метод из KyCicrleMenu RunButtonActions. Этот метод говорит мне, какая кнопка нажата в меню. Поэтому в этом методе я пытаюсь сделать segue другому диспетчеру представлений. Я делаю это так.

NSLog(@"tag is %d",[sender tag]); 
    [self performSegueWithIdentifier:@"showNews" sender:self]; 

(Журнал дает мне тег кнопки с нажатой кнопки). По той или иной причине я продолжаю получать эту ошибку.

Receiver (<MenuViewController: 0x1cd7cf50>) has no segue with identifier 'showNews'' 

Вот скриншот из моей раскадровки.

enter image description here

Может кто-нибудь помочь мне с этой досадной проблемой?

Сердечные приветы

+0

Вы забыли назвать super initWithCoder:? – jrturton

+0

Что делать в initWithCodeR? – Steaphann

+0

где код для выполнения segue написан? – Rakesh

ответ

1
- (id)initWithCoder:(NSCoder*)aDecoder 
{ 
    NSLog(@"called"); 
    if(self = [self initWithButtonCount:kKYCCircleMenuButtonsCount 
           menuSize:kKYCircleMenuSize 
          buttonSize:kKYCircleMenuButtonSize 
       buttonImageNameFormat:kKYICircleMenuButtonImageNameFormat 
         centerButtonSize:kKYCircleMenuCenterButtonSize 
       centerButtonImageName:kKYICircleMenuCenterButton 
     centerButtonBackgroundImageName:kKYICircleMenuCenterButtonBackground]) 
    { 


    } 
    return self; 
} 

Здесь вы ничего не делаете с aDecoder объекта - это содержит всю информацию из раскадровки (включая Segue). Вместо этого вы создаете совершенно новый объект, игнорируя все, что вы создали в раскадровке.

Я быстро просмотрел репозиторий и, похоже, не предназначен для использования в раскадровке - он реализует свой собственный метод loadView, имеет назначенный инициализатор и так далее. Вам придется поиграть с ним, чтобы установить эти свойства после вызова [super initWithCoder:aDecoder];, возможно, вытащив код установки из назначенного инициализатора и поместив его в отдельный метод.

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