0

在我的应用程序中,当我单击我时RightBarButtonItem,它会推送另一个视图控制器,但它显示以下错误。

-[__NSCFString _forgetDependentConstraint:]: unrecognized selector sent to instance 0x74c5960

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString _forgetDependentConstraint:]: unrecognized selector sent to instance 0x74c5960'

我不知道我做错了什么。

但是在那个视图控制器中,我只把这段代码放在viewDidLoad第二个视图控制器中

            [self.navigationController setNavigationBarHidden:TRUE animated:YES]; 




        first view controller contains the following code

        - (void)viewDidLoad
        {
            [super viewDidLoad];

            [self.navigationController setNavigationBarHidden:TRUE animated:YES];
        baseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)];

            UINavigationBar *navBar1 = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
            UINavigationItem *navItem1 = [[UINavigationItem alloc] initWithTitle:@""];
            [navBar1 pushNavigationItem:navItem1 animated:NO];
            UIBarButtonItem *menuButton1 = [[UIBarButtonItem alloc] initWithTitle:@""
                                                                            style:UIBarButtonItemStyleBordered
                                                                           target:self
                                                                           action:@selector(toggleMenu1)];
            navItem1.leftBarButtonItem = menuButton1;
            [baseView.self addSubview:navBar1];
            UIImageView *backgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"scr2.png"]];
            [baseView.self addSubview:backgroundImage];

            UIPanGestureRecognizer *pancontrol = [[UIPanGestureRecognizer alloc]
                                           initWithTarget:self action:@selector(panLayer:)];
            [self.view addGestureRecognizer:pancontrol];

            topView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)];

            UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
            UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@""];
            [navBar pushNavigationItem:navItem animated:NO];
            UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithTitle:@"Menu"
                                                 `enter code here`                         style:UIBarButtonItemStyleBordered                                                                  target:self
                                                                          action:@selector(toggleMenu)];
            navItem.leftBarButtonItem = menuButton;
            UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Add"
                                                                          style:UIBarButtonItemStyleBordered
                                                                         target:self
                                                                         action:@selector(toggleAdd)];
            navItem.rightBarButtonItem = addButton;
            [topView.self addSubview:navBar];
            backgroundImage1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"notebookbg.png"]];
            [topView.self addSubview:backgroundImage1];
            [baseView.self addSubview:topView];
            [self.view addSubview:baseView];
                }

这些是我的代码。

如何从第一个视图控制器移动到下一个视图控制器。

4

2 回答 2

1

问题似乎与 AddNewNote 类有关。正如 Cocoanetics 建议的那样,在 NSString 上创建一个类别并_forgetDependentConstraint在该类别中实现 : 。在文件中添加#import新的类别标题.PCH

于 2012-12-09T13:37:09.693 回答
1

在我看来,您没有正确地将实际的 NSString 分配给第一个或第二个视图控制器的标题或文本属性之一。

要找出问题发生的位置,请执行以下操作: - 在 NSString 上实现一个调试类别并添加一个 _forgetDependentConstraint: 方法,该方法只包含一个断点。- 当此方法的执行中断时,检查调用堆栈以查看它到底在哪里中断 - 还要检查方法内部的 self 并检查哪个字符串是罪魁祸首。

在我看来,好像您的视图层次结构中有一个 NSString 而不是 UIView。UIView 子类有这个 _forgetDependentConstraint: 方法,但字符串没有。

于 2012-12-09T10:03:45.967 回答