我創建了三個視圖控制器,即FirstViewController
,SecondViewController
& 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];
}
同樣地,我有ThirdViewController
。
在FirstViewController.h
- (無效)didSendDetailsFromThirdView:(的NSString *)顏色{ 的NSLog(@ 「選定的字符串是=%@」,顏色); }
-(void)didCompleteSending:(NSArray *)array{
for (NSString *str in array) {
NSLog(@"%@",str);
}
}
的-(void)didSendDetailsFromThirdView:(NSString *)colors
並沒有得到所謂的 'ThirdViewController'。
第二個編輯
- (IBAction)btnGoToThirdView:(id)sender {
FirstViewController *objFirstViewController = [FirstViewController alloc]init];
thirdView *objthirdView = [[thirdView alloc]init];
objthirdView.delegate=objFirstViewController;
[self.navigationController pushViewController:objthirdView animated:YES];
}
因此FirstViewController是ThirdViewController和SecondViewController的委託嗎? – Pfitz
你可以發佈你的代碼嗎? –
是! FirstViewController是ThirdViewController和SecondViewController的委託。 – footyapps27