2009-11-16 4 views
0

UITabBarController를 사용하여 앱의 다른 뷰를 추적합니다. 하나의보기에서, "퀴즈 컨트롤러"는 사용자가 세그먼트 화 된 컨트롤에서 숫자를 선택한 다음 정답을 정수 배열로 저장합니다. 아래쪽에는 '제출'버튼이 있습니다.이 버튼을 클릭하면 다른보기의 함수를 호출하여 '결과 컨트롤러'를 사용하여 결과를 표시해야합니다. 내 질문은, 어떻게 내가 결과를 분석하고 "결과 컨트롤러"에서 UILabels를 설정할 수 있도록 클래스 메서드를 처리합니까 "퀴즈 컨트롤러"에 의해 호출? 제출 버튼을 눌렀을위한UIButton을 누르는 경우 다른 클래스의 함수 호출

내 코드는 다음과 같습니다 : "ResultViewController는"내 "결과 컨트롤러"의 이름입니다

[ResultViewController calculateAndDisplayScores]; 

// swtich to results view 
mainDelegate.tabBarController.selectedIndex = 2; 

. 이 때, ResultViewController 내가 클래스 메서드에서 UILabel 텍스트 속성을 설정할 수 없다고 생각하는 오류를 제공합니다.

답변

0

정말 클래스 방법이 필요하지 않습니다. 탭 바 컨트롤러에있는 ResultViewController의 특정 인스턴스에 업데이트를 알리는 방법이 필요합니다. 특정 인스턴스 대신 클래스에서 메서드를 호출하기 때문에 컴파일러에서 불평하고 있습니다.

[(ResultViewController*)[mainDelegate.tabBarController.viewControllers objectAtIndex:2] calculateAndDisplayScores]; 

// switch to results view 
mainDelegate.tabBarController.selectedIndex = 2; 

을하지만,이 작업을 수행하는 올바른 방법은 아마 어떤 종류의를하는 것입니다 :

당신이 게시 한 코드를 기반으로 그것을 수행하는 가장 간단한, 추한 방법이 될 것 같다 정보가 존재하는 모델 객체. 데이터 입력 UI는 모델과 통신하여 현재 데이터를 가져오고 사용자 편집 내용을 푸시 백합니다. 그런 다음 모델은 결과보기 컨트롤러와 같은 모든 이해 관계자에게 새 데이터를 사용할 수 있음을 알리고 그에 따라 스스로를 업데이트해야합니다. 이 알림은 대리자 관계를 통해 이루어질 수도 있고 NSNotificationCenter을 사용하거나 다른 방법으로 생각해 볼 수도 있습니다.

(Objective-C의 클래스에는 실제로 상태가 없으므로 클래스 메서드가 결과를 유지하거나 UI를 업데이트하는 방법은 무엇입니까?)

관련 문제