2 개의 화면이있는 간단한 앱이 있습니다. 첫 번째부터 두 번째로 이동하기 위해 버튼을 누르면 모든 것이 성공적으로 수행됩니다 (애니메이션 포함). 내가 두 번째 화면에서 뒤로 단추를 클릭 할 때 그러나, 나는 다음과 같은 경고를 얻을 :목표 C : 뒤로 버튼이 작동하지 않습니다.
Warning: Attempt to present <getTextViewController: 0x8f6aa30> on <SecondViewController: 0x946cc80> whose view is not in the window hierarchy!
편집 : 경고 이상에 대한 다른 질문에 저를 참조하지 마십시오 - 이미 사람들을보고, 그들은 참조 다른 문제.
그러나 여전히 첫 번째 화면으로 전환됩니다. 그러나, segue의 애니메이션은 수행되지 않습니다. 또한 : 첫 번째 화면으로 돌아 가면 첫 번째 화면의 정보 (예 : 입력 된 텍스트)가 남아 있고 두 번째 화면의 정보는 화면이 나타날 때마다 다시 설정됩니다. getTextViewController.m에
Segue from View 1 to View 2:
Name: F21, Style: Modal, Transition: Cross Dissolve, Animation: True.
Segue from View 2 to View 1:
Name: F12, Style: Modal, Transition: Cross Dissolve, Animation: True.
코드 (보기 1) :
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"F21"]){
UIViewController *v = [segue destinationViewController];
[self dismissViewControllerAnimated:NO completion:nil];
v = self;
}
}
-(void)performSegue:(NSString*)str{
[self performSegueWithIdentifier:str sender:self];
}
//In some other method:
[self performSegue:@"F21"];
코드 SecondViewController.m에서 (보기 2) :
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([[segue identifier] isEqualToString:@"F12"]){
UIViewController *v = [segue destinationViewController];
[self dismissViewControllerAnimated:NO completion:nil];
v = self;
}
}
-(void)performSegue:(NSString*)str{
[self performSegueWithIdentifier:str sender:self];
}
- (IBAction)goBack:(id)sender {
[self performSegue:@"F12"];
}
여기
내가 두 작업을 호출하는 방법입니다
왜 두 번째하지 않는 첫 번째 segue 작품을 이해하는 데 도움이 주셔서 감사합니다.
이딘
참고 감사 : 여기에 전체 프로젝트 - https://github.com/dean13-meet/firstIOSApp 편집 : 업데이트 자식.
github 프로젝트에 getTextViewController .h 및 .m 파일이 없습니다. – rdelmar
왜 뒷문이 필요합니까? 이 기능은 내장되어 있습니다! 'SecondVC'를 닫은 후 그 해지 된'VC'에서 새로운'VC'를 보여주기 때문에 에러 메시지가 나타납니다. – Marc
두 번째보기 컨트롤러의 첫 번째보기로 돌아가려면 segue를 사용하지 말고 단순히 사용한 [self dismissViewControllerAnimated : NO completion : nil] 메서드를 사용하십시오. – nikhil84