FirstViewController
, SecondViewController
& ThirdViewController
이라는 세 개의보기 컨트롤러를 만들었습니다. FirstViewController
은 SecondViewController
을 푸시하며, 마찬가지로 SecondViewController
은 ThirdViewController
을 푸시합니다.직접 이동하지 않은 경우 대리자가 호출되지 않음
ThirdViewController
은 UITableViewController입니다.
SecondViewController
및 ThirdViewController
에는 사용자 지정 프로토콜이 있습니다. 둘 다 각각 대표자를 사용하여 FirstViewController
값을 전달합니다.
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
}
당신은 자기로하여 SecondViewController
하는 .m에서 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