2011-09-07 2 views
0

내가 뭔가를 할 때 같은 입력 @ "Hallo"다른 컨트롤러에서 UITextField에 대한 코드와 함께 내가 열어 havent 그 UITextField 여전히 null이지만, 내가 전에 그것을 열면 UITextField는 "Hallo 나는이 방법을 문의하기 전에 "이Start Launch application (xcode)에서 Controller Load를 모두 만드는 방법은 무엇입니까?

+(void)MakeController2LblTextIsLikeMyStringAtController1{ 
     Controller2.lblText.text=MyString; 
} 

같은

프로그램은 내가 컨트롤러 2로드되지 않을 경우. Controller2.lblText.text는 여전히 null이지만 Controller2를로드하지 않으면 lblText.text는 isEqual MyString이됩니다.

문제는 20-50 개의 다른 컨트롤러가있는 경우 어떻게 시작로드 응용 프로그램에서로드 할 수 있습니까? 프로그래밍 방식으로보기 컨트롤러를 강제로 열려면 어떻게합니까?

답변

0

미안하지만 어떻게 존재하지 않는 UITextField에 어떤 텍스트를 할당 할 수 있다고 생각합니까? 컨트롤러 (모든 클래스)를 할당하고 초기화 할 때 해당 속성도 생성 (초기화)되므로 액세스 할 수 있습니다. 존재하지 않는 무언가 또는 속성에 액세스 할 수있는 방법이 없다는 사실을 명심해야합니다. Controller2를로드 ([alloc init]) 한 후에 할당을 해제 할 수없는 이유는 아마도 할당을 취소하지 않았기 때문입니다. 그만큼 간단합니다. 시작할 때 모든 파일을로드하려면 모든 Controller 클래스의 배열을 가질 수 있으며 foreach 루프를 반복하여 하나씩 반복하도록 할 수 있습니다. 그러나 귀하의 응용 프로그램이 의도 한 바를 exacly 알지 못해서 제안 된 방법이 귀하의 상황과 관련이 없을 수도 있습니다. 그것은 단지 당신이 원하는 것을하는 것입니다.

+0

@Johan Kool과 완전히 일치합니다. 시작시 많은 컨트롤러를 사용하지 않는 것이 좋으며 메모리가 부족하여 응용 프로그램이 OS에 의해 강제 종료됩니다. 그리고 나는 당신이 정말로 그들을 한 번에 모두로드 할 필요가 있다고 생각합니다. 응용 프로그램 구조와 코드 흐름을 검토해야합니다. –

1

시작할 때 모든보기 컨트롤러를로드하지 마십시오. 시도하면 메모리 사용으로 인해 OS가 빨리 쫓아 낼 것입니다. 대신 MVC 패러다임을 올바르게 구현하십시오. 다른보기 컨트롤러에서 UILabel에 액세스해야하는 이유는 앱의 구조가 적절하지 않다는 것입니다.

관련 문제