1

ViewController(最初のビュー) と(2 番目のビュー)の間にカスタム セグエを作成しようとしていますBrowserController

現在、私は...

CustomSegue.h:

#import <UIKit/UIKit.h>

@interface CustomSegue : UIStoryboardSegue

@end

CustomSegue.m:

    #import "CustomSegue.h"

@implementation CustomSegue

- (void)perform {

    NSLog(@"Perform Method Running");

    UIViewController *ViewController = (UIViewController *) self.sourceViewController;
    UIViewController *BrowserController = (UIViewController *) self.destinationViewController;

    NSLog(@"Starting duration...");

    [UIView transitionWithView:ViewController.navigationController.view duration:0.2
    options:UIViewAnimationOptionTransitionFlipFromLeft
    animations:^{

                NSLog(@"Animation section");

                [ViewController.navigationController pushViewController:BrowserController animated:NO];

                }
                    completion:NULL];

    NSLog(@"Performance Method Completion");

}

ボタンをクリックして次のビューに移動しても何も起こりません。

ビューのセグエを「カスタム」(CTRL ドラッグ) に設定し、クラスを「CustomSegue」として定義しました。CTRL とドラッグの後に選択する「カスタム」オプションが 2 つあります。念のため、これらの両方を試しました (両方ともクラスを再定義しました)。それでも問題は解決しません。またNSLogperformメソッドが呼び出されていることを確認しました。エラーはありませんが、ボタンはまだ次のビューへのセグエ (または ANY セグエ) を実行しません。

セグエをトリガーするボタン

- (IBAction)browserButton:(id)sender

これは、絞り込むことができる最後の領域です...IBAction新しいセグエを使用するように指示するために、これに何かを追加する必要がありますか?

4

2 に答える 2

2

Xcode があなたに伝えていることは正確に正しいです: self(これはもちろん typeですCustomSegue) has no or property. これは、クラスでこれらのプロパティを宣言しておらず、その基本クラスにもこれらのプロパティがないためです。ViewControllerBrowserControllerCustomSegueUIStoryboardSegue

試すことができる解決策は 2 つあります。組み込みプロパティを直接使用する方法と、必要な名前でプロパティにラップする方法です。

最初のアプローチは次のとおりです。

UIViewController *ViewController = (UIViewController *) self.sourceViewController;
UIViewController *BrowserController = (UIViewController *) self.destinationViewController;

2番目のアプローチは次のとおりです。

-(UIViewController*) ViewController {
    return self.sourceViewController;
}
-(UIViewController*) BrowserController {
    return self.destinationViewController;
}

最初のアプローチは実装が高速ですが、読みにくい場合があります。2 番目の方法では、より多くの入力が必要になりますが、ソース コントローラーと宛先コントローラーに、アプリケーションでの役割をより適切に表す名前が付けられます。選択はあなた次第です。

于 2013-04-09T01:06:17.900 に答える