1

iPhone開発でデリゲートを練習していますが、問題があります

2012-05-12 21:21:54.279 DelegatePractice[2924:f803] -[secondViewController viewControllers]: 認識されないセレクターがインスタンス 0x6b61d10 に送信されましたexception 'NSInvalidArgumentException', reason: '-[secondViewController viewControllers]: unrecognized selector sent to instance 0x6b61d10' * First throw call stack: (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)

デリゲートを適切に設定したと思います:

delegateViewController.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];
}
4

3 に答える 3

0

これを試して

secondViewController *SecondViewController =[[self.navigationController viewControllers]objectAtIndex:0];
于 2012-05-12T13:37:26.370 に答える
0

アプリは次の行でクラッシュします。

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

あなたはnavigationControllerそのviewControllers_ _ _ _ _ _navigationControllerUINavigationControllersecondViewController-viewControllers

segue.destinationViewController本当に を返すことを確認してくださいUINavigationController

于 2012-05-12T13:35:46.477 に答える