오늘 뭔가 이상하게 보였습니다. 누군가 뭔가를 알고 있을지도 모릅니다. UIViewController 및 해당 NIB 하위 클래스가 있습니다. UIViewController 메서드 및 잘 작동하는 모든 레이블을 설정합니다.pushViewController, UILabel 텍스트를 설정할 때 및 setNeedsDisplay를 호출해야합니까?
이제 다른 클래스에서 다시 사용하려는 ViewController를 다시 만듭니다. 나는이 작업을 수행 :
MyViewController *vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
vc.titleLabel.text = @"testing";
vc.myTextLabel.text = @"yo";
self.navigationController pushViewController:vc animated:NO];
[vc release];
이 수행 하지 일을. 왜 이것이 작동하지 않는지 나는 모른다. 모든 레이블을 설정 한 다음 스택에 밀어 넣어보기 컨트롤러를 표시한다고 생각합니다.
그러나, 내가 할 경우이 :
[vc.view setNeedsDisplay]; // why here???
MyViewController *vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
vc.titleLabel.text = @"testing";
vc.myTextLabel.text = @"yo";
self.navigationController pushViewController:vc animated:NO];
[vc release];
이 이 작업을 수행합니다. 이것은 나에게 이해가되지 않는다. 뷰를 다시 그려야하는 후에 setNeeds Display가 호출되었다고 생각했습니다. setNeedsDisplay를 블록의 끝으로 옮기면 작동하지 않습니다. 그것은 단지 나에게 매우 이상한 블록의 시작 부분에서만 작동합니다. 이전에이 문제가 발생했거나 왜 이렇게 작동하는지 알 수 있습니까? 감사.
두 번째 스 니펫은 컴파일되지 않습니다. 주로 vc가 선언되기 전에 참조되기 때문에 (두 번째는 self.navigationController 앞에 여는 것이 없어서). alloc + init 행 다음에 setNeedsDisplay를 호출하지 않습니까? 이는 vc의 뷰를로드하고 IBOutlet을 초기화해야하기 때문에 효과가 있습니다. – Anna