簡體   English   中英

無法識別的選擇器已發送到實例0x6b61d10

[英]unrecognized selector sent to instance 0x6b61d10

我正在iphone開發中練習委托,但是有問題

2012-05-12 21:21:54.279 DelegatePractice [2924:f803]-[secondViewController viewControllers]:無法識別的選擇器發送到實例0x6b61d10 2012-05-12 21:21:54.281 DelegatePractice [2924:f803] *由於未捕獲而終止應用程序異常'NSInvalidArgumentException',原因是: ' - [secondViewController viewControllers]:無法識別的選擇發送到實例0x6b61d10' *第一擲調用堆棧:(0x13bb052 0x154cd0a 0x13bcced 0x1321f00 0x1321ce2 0x2596 0x436e1e 0x13bcec9 0x155c2 0x250d54 0x13bcec9 0x155c2 0x1555a 0xbab76 0xbb03f 0xba2fe 0x3aa30 0x3ac56 0x21384 0x14aa9 0x12a5fa9 0x138f1c5 0x12f4022 0x12f290a 0x12f1db4 0x12f1ccb 0x12a4879 0x12a493e 0x12a9b 0x1e98 0x1df5)

我認為我正確設置了代表:

proxyViewController.m

- (void)secondViewControllerDidJump:
(secondViewController *)controller
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"jump"])
    {
        UINavigationController *navigationController = segue.destinationViewController;
        secondViewController *SecondViewController =[[navigationController viewControllers]objectAtIndex:0];
        SecondViewController.delegate = self;
    }
}

@end

secondViewController.h

@class secondViewController;

@protocol SecondViewControllerDelegate <NSObject>
- (void)secondViewControllerDidJump: (secondViewController *)controller;

@end

@interface secondViewController : UITableViewController

@property (strong,nonatomic) NSArray *choices;
@property (nonatomic, weak) id <SecondViewControllerDelegate> delegate;

- (IBAction)jump:(id)sender;

@end

secondViewController.m

- (IBAction)jump:(id)sender
{
    [self.delegate secondViewControllerDidJump:self];
}

有同樣的問題,我通過使用以下方法解決了:

secondViewController *SecondViewController = segue.destinationViewController;

基本上,segue.destinationViewController返回一個視圖控制器,因此請使用它。

您的應用在以下行中崩潰:

UINavigationController *navigationController = segue.destinationViewController;
secondViewController *SecondViewController =[[navigationController viewControllers]objectAtIndex:0];

您向navigationController詢問其viewControllers ,但日志清楚地表明navigationController 不是 UINavigationController而是secondViewController ,它不響應選擇器-viewControllers

確保segue.destinationViewController確實返回UINavigationController

嘗試這個

secondViewController *SecondViewController =[[self.navigationController viewControllers]objectAtIndex:0];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM