2012-12-05 4 views
0

4 개의 UIButtons (텍스트 포함) 및 1 개의 UILabel (텍스트 포함)이있는 50 개의 창을 모든 창에 추가 할 예정입니다. 이 방법으로해야합니까? 더 좋은 방법이 있습니까?UIWindows를 결합 하시겠습니까?

+1

50 개의 UIWindows를 추가 하시겠습니까? 무엇을 성취하려고합니까? 레코드에 대해 – mkral

+1

을 입력하고 아무렇게나 UIWindows를 추가하지 마십시오. – mkral

+0

왜 많은 창을 사용 하시겠습니까? UIView 또는 컨트롤러를 사용할 수없는 이유는 무엇입니까? – iDev

답변

1

도와 줄 수 있다면 추가 창을 만드는 것이 좋지 않습니다. 특히 그렇게 할 필요가 거의없는 곳의 iOS의 경우에는 특히 그렇습니다. UIViewController 하위 클래스를 만들고이를 루트보기 컨트롤러로 만들어야합니다.이 뷰어는 이미 단일 뷰 응용 프로그램 템플릿에 설정되어 있습니다. 그런 다음 UIView의 하위 클래스를 만듭니다 - "MyQuizView"라고 부르 자. "MyQuizView"에는 다섯 개의 NSString을 사용하는 사용자 정의 이니셜 라이저가 있어야합니다 (하나는 질문 용, 네 개는 답변 용). 그리고 정수는 올바른 대답을 결정합니다. 그런 다음 UIViewController 하위 클래스는이 뷰 중 50 개를 인스턴스화하여 모델에서 값을 전달하여 기본 뷰의 하위 뷰로 만들 수 있습니다.

편집 : 다음은 UIView 하위 클래스의 사용자 정의 이니셜 라이저의 예제입니다.

- (id) initWithFrame:(CGRect)frame question:(NSString*)ques answers:(NSArray*)ans correctAnswer:(int)correctAns{ 
    self = [super initWithFrame: frame]; 
    if (self) { 
     self.question = ques; 
     self.answers = ans; 
     self.correctAnswerNumber = correctAns; 
     [self setup]; 
    } 
    return self; 
} 

맞춤 이니셜 라이저는 init으로 시작됩니다. self을 슈퍼 클래스의 지정된 초기화 프로그램의 반환 값으로 설정 한 다음 self이 nil이 아닌 경우 대개 전달 된 인수를 사용하여 상태를 초기화합니다. 결국 self을 반환합니다. 이것은 올바른 속성을 가지고 있다고 가정하고 속성을 올바른 값으로 설정 한 후 setup이라는 메서드를 호출합니다.이 메서드를 사용하여 레이블 및 기타 등고선을 만들 수 있습니다. 또는 전달 된 값을 가져 와서 레이블 및 버튼을 즉시 만들고 대상 작업을 설정하여 하위 뷰로 배치하면 인수를 속성으로 유지할 필요가 없습니다. 각 버튼에는 숫자 태그가 주어질 수 있으므로 답변이 올바른지 여부를 알 수 있습니다 (이니셜 라이저에 전달 된 정수를 기반으로합니다) 이 어딘가에 저장해야합니다. 이것은 모두 기억에서 나온 것입니다.

+0

Nmzik이 뭘하려고하는지 잘 알고 있기 때문에 +1 –

+0

+1 모든 질문/답변을 저장할 수있는 방법을 언급하기 위해 +1. – Metabble

+0

고마워 .... "다섯 개의 NSStrings (질문 중 하나, 대답은 4 개)와 정수가 올바른지를 결정하는 사용자 정의 이니셜 라이저가 있어야합니다."어떻게 할 수 있습니까 ????? 도와주세요 –

1

50 개의 창 (MacOS 질문 인 경우) 또는보기 (iOS 질문 인 경우)를 만드는 데 시간을 낭비하지 마십시오. 와우, 그건 끔찍할거야.

대신 네 개의 단추와 하나 이상의 레이블이있는 단일보기 하나를 만드십시오.

그러면 & 답변 목록에서 해당 항목의 문자열 값을 채울 수 있습니다. 이러한 질문을 plist 파일이나 CoreData 데이터베이스 또는 분석 가능한 플랫 파일 등에서도 유지할 수 있습니다. "IBAction"메소드를 통해 네 개의 버튼을 (game?) 컨트롤러에 연결하십시오.

관련 문제