私はUIViewControllerをいくつか持っています。使用が終了したらunwind
をDashboardViewControllerに戻す必要があります。ストーリーボードから巻き戻すと、代理人が呼び出されないようにします
ダッシュボードにunwindToDashboard
メソッドを作成し、までのボタンをフックしてFinishViewController
にしました。それがクリックされたときに巻き戻しアクションが発生するようにします。
これは問題なく動作します。
しかし、データをFinishViewControllerからダッシュボードに戻す必要があります。
FinishViewController
の代理人ProcessDataDelegate
を作成し、ダッシュボードに準拠させました。
ただし、ダッシュボードのデリゲートメソッドはで、と呼びます。
誰でも私が間違っていることを教えてもらえますか?
DashboardViewController.m
#import "FinishViewController.h"
@interface DashboardViewController() <ProcessDataDelegate>{
FinishViewController *fm;
}
@end
@implementation DashboardViewController
- (void)viewDidLoad {
[super viewDidLoad];
if(!fm){
fm = [[FinishViewController alloc] init];
}
fm.delegate = self;
}
- (IBAction)unwindToDashboard:(UIStoryboardSegue *)unwindSegue {
//empty
}
#pragma mark PROTOCOL METHODS
-(void) didFinishWithResults:(NSDictionary*) dictionary{
NSLog(@"Dashboard method called didFinishWithResults");
}
@end
FinishViewController.h
@class FinishViewController;
@protocol ProcessDataDelegate <NSObject>
@required
- (void) didFinishWithResults: (NSDictionary*)dictionary;
@end
@interface FinishViewController : UIViewController
@property (nonatomic, weak) id <ProcessDataDelegate> delegate;
@end
FinishViewController.m
@interface FinishViewController()
@end
@implementation FinishViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"fired via the button to the exit--- Segue: %@", [segue identifier]);
[delegate didFinishWithResults:nil ];
}
@end
ような何かが
FinishViewController
へdestinationViewController
とキャストをそこに着く、あなたのDashboardViewController
のprepareForSegue
方法であなたのデリゲートを渡す必要がありますseguesとstoryboardあなたは[[alloc] initでviewControllerをインスタンス化できません。segueメソッドの準備で目的のビューコントローラを取得し、デリゲートをそこに渡す必要があります –必要なsegueが4または5のセグの場合はどうなりますか?そのため、私は巻き戻し機能を使用しています。 –
しかし、ただ1つはfinishViewControllerに行きますか?あなたは識別子を持っていますか? –