0

我正在使用图书馆 KYCircleMenu。你可以在这里找到它。我也在使用故事板。我制作了一个派生自 KYCircleMenu 的类 MenuViewController

@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''

这是我的故事板的屏幕截图。

在此处输入图像描述

有人可以帮我解决这个烦人的问题吗?

亲切的问候

4

1 回答 1

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];,可能是通过从指定的初始化程序中提取设置代码并将其放入单独的方法中。

于 2013-03-21T09:46:49.543 回答