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];
}