2013-04-16 6 views
0

캐롤라이나 컨트롤 (iCarousel)을 표시하는보기 컨트롤러가 있습니다. 뷰가 올바르게 렌더링되고 캐 러셀이 표시됩니다. 그 후 바로 사용자가 특정 용어에 동의 할 수있는 모달이 표시됩니다. 나는 일단 그들이 컨베이어 컨트롤을 포함하고있는 viewcontroller를 새로 고침한다고 동의하면 좋겠다. 기본적으로 나는 회전 목마를 임의의 색인으로 회전시키고 싶다.모달 컨트롤러에서 UIViewController 새로 고침

- (IBAction)accept:(id)sender 
{ 
    NewsViewController *newsViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"NewsStoryboard"]; 

    [newsViewController loadNews]; 
    [newsViewController.view setNeedsDisplay]; 



    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

위의 코드는 loadNews를 호출하고 가져 오지만 뷰는 새로 고쳐지지 않습니다.

+1

당신의 ViewController 제시 모달에 대한 위임을 만들 필요

내가 내 책에서 길게 얘기 그렇게 할 수 있도록 그렇게 중요한 일이다. 이 게시물을 참조 할 수 있습니다. http://stackoverflow.com/a/9736559/767730 – Anupdas

+1

새 NewsViewController를 작성 중이므로 기존 NewsViewController에서 loadNews를 호출하지 않으므로 작동하지 않습니다. 대리인을 만들거나 알림을 사용하는 것이 좋습니다. http://stackoverflow.com/questions/569940/whats-the-best-way-to-communicate-between-view-controllers –

+0

모달을 표시하는 newscontroller가 아니기 때문에 모달을 만드는 것이 어렵습니다. 대리인 기반 솔루션. 어쩌면 NSNotification을 보게 될 것입니다 –

답변

2

캐 러셀에 발생하는 상황은 모달 뷰 컨트롤러가 아닌 실제로 관리하는보기 컨트롤러에 달려 있어야합니다. 모달 컨트롤러가 자신의 일을 처리하고 모달로 수집 한 데이터를 부모에게 반환합니다. 그러면 부모 (이 경우 회전식 컨트롤러)는 해당 데이터를보고 다음에 수행해야 할 작업 (예 : 새로 고침)을 결정할 수 있습니다.

0

문제는이 라인이다

NewsViewController *newsViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"NewsStoryboard"]; 

이전보기 컨트롤러 아니다; 새로운 뷰어 컨트롤러 입니다. 모달 뷰 컨트롤러에서 기존 뷰 컨트롤러로 다시 한 줄의 통신을 만들어야합니다.

이 작업을 수행하는 일반적인 방법은 모달보기 컨트롤러를 만들 때 설정하는 대리인을 사용하는 것입니다. Xcode 유틸리티 템플릿을 보면이 아키텍처를 보여줍니다. 원래보기 컨트롤러는 자체를 모달보기 컨트롤러의 대리자로 설정하므로 모달보기 컨트롤러는 원래보기 컨트롤러로 되돌려 보낼 수 있습니다.

http://www.apeth.com/iOSBook/ch19.html#_presented_view_controller

관련 문제