FirstViewController、SecondViewController&という 3 つのビュー コントローラーを作成しましThirdViewControllerた。FirstViewControllerを押し、SecondViewController同様にSecondViewController押しThirdViewControllerます。
これThirdViewControllerは UITableViewController です。
とSecondViewControllerにThirdViewControllerはカスタム プロトコルがあります。どちらもFirstViewController、それぞれのデリゲートを使用することに価値があります。
問題は、SecondViewControllerが に値を正常に渡しているのにFirstViewController、 がThirdViewControllerそれを実行できないことです。
は からSecondViewController直接ナビゲートされているためFirstViewController、それを渡すことができ、 とThirdViewController接続されていFirstViewControllerないため、データを渡すことができないためですか?
どんな助けでも大歓迎です。
編集:
ボタンアクションをFirstViewController押すだけです。SecondViewController
はSecondViewController.h:
@protocol secondViewDelegate <NSObject>
-(void)didCompleteSending:(NSArray *)array;
@end
@interface secondView : UIViewController
@property (nonatomic,strong) NSArray *footballPlayers;
@property (assign) id<secondViewDelegate>delegate;
- (IBAction)btnAction:(id)sender;
- (IBAction)btnGoToThirdView:(id)sender;
はSecondViewController.m:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
footballPlayers = [[NSArray alloc]initWithObjects:@"Rooney",@"Van Persie",@"Ronaldo",@"Kagawa", nil];
}
- (IBAction)btnAction:(id)sender {
[delegate didCompleteSending:footballPlayers];
}
- (IBAction)btnGoToThirdView:(id)sender {
thirdView *objthirdView = [[thirdView alloc]init];
objthirdView.delegate=self;
[self.navigationController pushViewController:objthirdView animated:YES];
}
同様に私は for を持っていThirdViewControllerます。
In FirstViewController.h
-(void)didSendDetailsFromThirdView:(NSString *)colors{ NSLog(@"selected string is = %@",colors); }
-(void)didCompleteSending:(NSArray *)array{
for (NSString *str in array) {
NSLog(@"%@",str);
}
}
は-(void)didSendDetailsFromThirdView:(NSString *)colors「ThirdViewController」から呼び出されません。
2回目の編集
- (IBAction)btnGoToThirdView:(id)sender {
FirstViewController *objFirstViewController = [FirstViewController alloc]init];
thirdView *objthirdView = [[thirdView alloc]init];
objthirdView.delegate=objFirstViewController;
[self.navigationController pushViewController:objthirdView animated:YES];
}