2013-05-07 2 views
1

iOS에 약간의 문제가 있습니다. 프로토콜을 사용하고 수동으로보기를 전환하는 두보기 컨트롤러간에 데이터를주고 받고 있습니다. 내 문제는 상위 뷰를 닫을 때 하위 뷰의 viewDidLoad가 다시 호출되지 않는다는 것입니다. 두 번째보기에서 첫 번째보기로 정보를 전송할 때 viewDidLoad를 호출해야 전달할 정보를 처리 할 수 ​​있습니다. 이 작업을 수행하는 방법에 대한 아이디어가 있으면 도움을 받으실 수 있습니다. 고맙습니다.viewDidLoad를 수동으로 호출하려면 어떻게해야합니까?

+0

또 다른 가능한 뷰가 실제로 볼 때 호출되는, 그리고 뷰 컨트롤러의 수명주기 동안 여러 번 호출 할 수 있습니다 (모달보기 컨트롤러 해제 할 때 예하고 뷰를 다시 표시된다) 해결 방법은 두 컨트롤러 모두 동일한 모델을 공유하도록하는 것이지만 어떻게 할 것인지 확실하지 않습니다. – CoffeeIsProgramming

+2

viewDidLoad에서 로직을 이동하십시오. 너는 그걸 부르면 안돼. 더 나은 장소는 viewDidAppear :일지도 모르지만 실제로 통신을위한 프로토콜이 이미 있으므로 가장 좋은 장소는 변경된 내용을 전달하기 위해 해당 프로토콜을 사용하는 것입니다. 그러면 첫 번째보기는 해당 프로토콜 메시지를받을 때 자체를 업데이트 할 책임이 있습니다. – Anurag

답변

2

사용 -(void)viewDidAppear:(BOOL)animated 대신 I 앞뒤로 두 뷰 프로토콜을 이용하여 제어기와 수동 전환 뷰 사이에서 데이터를 전달하고

+0

마지막으로, 함수를 호출하면 내 프로토콜이 null 값을 반환합니다. 이것에 대한 공통된 이유가 있습니까? – CoffeeIsProgramming

+0

@Adam 일부 코드 (어쩌면 다른 질문)를 게시하십시오. 이 정보로 말하기가 어렵습니다. –

1

viewDidLoad. 내 문제는 상위 뷰를 닫을 때 하위 뷰의 viewDidLoad가 다시 호출되지 않는다는 것입니다. 두 번째보기에서 내 첫 번째보기로 정보를 전송하기 때문에 viewDidLoad를 호출해야합니다.

아니요, 당신이 생각하는 사실로 인해 다른 것이 잘못 될 수도 있습니다. 이리.

이 고려 : 당신이 진정으로 첫 번째, 다음 첫 번째 뷰 컨트롤러 에서 두 번째 뷰 컨트롤러에서 다시 데이터를 전달하는 경우 것이 데이터를 가지고 있으며, 지금 자체 를 업데이트 할 수 있습니다. 존재하고보기가 있습니다. 따라서 데이터를 넘길 때 현장에서 업데이트해야합니다. 그런 다음 두 번째보기 컨트롤러를 닫으면 첫 번째보기 컨트롤러의보기가 나타납니다 - 이미 업데이트되었습니다. 사실, 두 번째보기 컨트롤러를 닫으려면 은 모두 첫 번째보기 컨트롤러의보기를 보여줍니다.이보기는 표시되지 않았지만 업데이트되었습니다.

+0

음, 데이터가 전달되는 데이터를 "처리"할 장소가 필요하다는 것입니다. 예를 들어 문자열 배열을 전달하고이를 모델에 전달하는 등의 작업을하고 싶습니다. viewDidLoad가 아닌 경우 어떻게합니까? 뷰를 포 그라운드로 배치하려면 터치 이벤트가 호출됩니다. 두 번째보기를 제시하기 위해 전화 한 직후에이 터치 이벤트에서 처리 할 수 ​​있습니까? – CoffeeIsProgramming

+1

정말로 데이터를 되돌려 보내는 경우 첫 번째보기 컨트롤러에서 메서드를 호출하여 데이터를 전달합니다. 이제 첫 번째보기 컨트롤러가 작동 중입니다! 그것은 어떤 방법으로 문자열의 배열을받으며, 그 방법의 바로 그곳에서 무엇이든 할 수 있습니다. – matt

+0

그럼이게 맘에 든다. 내 터치 이벤트가 뷰를 호출하여 첫 ​​번째 뷰에 배치됩니다. 그런 다음 두 번째보기에서 단추를 클릭하면 특정 데이터가 설정됩니다.두 번째보기가 해제되면 해당 데이터가 다시 전달됩니다. – CoffeeIsProgramming

10
- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 

뷰 컨트롤러가 메모리에 처음로드 될 때 정확히 한 번 호출됩니다. 여기서 인스턴스 변수를 인스턴스화하고이 뷰 컨트롤러의 전체 수명주기 동안 살아있는 뷰를 빌드하고자합니다.

- (void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
} 

관련 문제