0

FlipsideViewController の「完了」ボタンが機能しません (クラッシュはしませんが、ビューを閉じません)。コードは次のとおりです。

FlipSideViewController.h 内

@class FlipsideViewController;

@protocol FlipsideViewControllerDelegate
- (void)flipsideViewControllerDidFinish:(FlipsideViewController *)controller;
@end

@interface FlipsideViewController : UIViewController

@property (weak, nonatomic) id <FlipsideViewControllerDelegate> delegate;

- (IBAction)done:(id)sender;

@end

FlipSideViewController.m 内

- (IBAction)done:(id)sender
{
// an NSLog statement that is here is logging properly
[self.delegate flipsideViewControllerDidFinish:self];

}

MainViewController.h 内

@interface FifthViewController : UIViewController <FlipsideViewControllerDelegate> 
...

MainViewController.m 内

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

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showAlternate"]) {
    [[segue destinationViewController] setDelegate:self];
}
}

ちなみに、これはタブ付きのアプリケーションなので、何か関係があるのではないかと思います。任意の提案をいただければ幸いです。ありがとうございました。

4

2 に答える 2

0

これを試して:

- (IBAction)done:(id)sender
{
   // an NSLog statement that is here is logging properly
   [self.delegate performSelector:@selector(flipsideViewControllerDidFinish:)
            withObject:self
            afterDelay:0.0];
}

実行ループの次の繰り返しで却下を実行する必要がある場合があります。これは、performSelector上記のステートメントが達成することです。

于 2013-01-21T17:40:43.340 に答える
0

問題が見つかりました。MainViewController.m の下の質問コードを見ると、コードだけでなく、ストーリーボード ファイルにもセグエ識別子を設定する必要があります。

if ([[segue identifier] isEqualToString:@"showAlternate"]) {
[[segue destinationViewController] setDelegate:self];
}

助けてくれてありがとう、セルジオ。

于 2013-01-23T22:14:02.383 に答える