나는 아이폰의 Objective-C 이벤트 모델에 대해 머리를 쓰려고 노력하고 있으며, 근본적으로 여기서 오해 한 것들을 보았다.UI를 업데이트하기 전에 viewDidLoad가 대기하는 이유는 무엇입니까?
보기 컨트롤러의 -viewDidLoad 메서드에서 UILabel의 텍스트를 설정하고 2 초 동안 잠자기 한 다음 레이블의 텍스트를 다시 변경합니다.
내 기대치는 다음과 같습니다. 레이블에 "First Text"가 먼저 표시되고 2 초 후 "Second Text"로 업데이트됩니다. 물론, 이것이 실제로 어떻게 일어나는 것이 아닙니다. 대신,보기는 에 전혀 표시되지 않고 2 초 동안 표시되고 마지막으로 표시되면 해당 레이블에 "두 번째 텍스트"가 표시됩니다.
누군가 제발 나에게 무슨 일이 일어나는지 설명해 주시겠습니까? 나는 너희들이 내가 여기 갈 일을 어떻게 성취 할 수 있는지에 대해 관심이있다.
건배.
UPDATE 1은 :
- (void)viewDidLoad {
[super viewDidLoad];
label.text = @"First Label";
sleep(2);
label.text = @"Second Label";
}
업데이트 2 : 여기에있는 viewDidLoad 방법이다 내가 지금이 업데이트를 무시하세요, 여기에 바보 같은 실수를했다.
UPDATE 3는 :
- (void)viewDidAppear: (BOOL)animated {
[super viewDidAppear: animated];
label.text = @"First Label";
sleep(2);
label.text = @"Second Label";
}
불행하게도 나는 정확히 같은 문제에 봉착 : 나는 지금 내 viewDidAppear 방법에 다음과 같은 추가했습니다.
업데이트 4 : gerry3 및 Felix의 제안에 따라 필자는 performSelector를 구현하여 호황을 누리고 있습니다. 치료를해라 !! 그가 확실히 나를 도와 주는데 많은 노력을 기울 였기 때문에 나는 그것을 gerry3에게 주어야 할 것입니다. 모든 기여에 감사드립니다!
건배 Gerry. viewDidAppear 및 viewWillAppear 메서드를 사용하여 원래 질문을 업데이트했습니다. –
올바른 메서드 시그니처를 사용해야합니다. 뷰 * 표시 : 호출에는 부울 인수 (일반적으로 "애니메이션")가 있습니다. 그래서 콜론으로 이름을 마쳤습니다. 또한, 둘 모두에 대해 super를 호출하고 인수를 전달해야합니다. – gerry3
완벽. 코드의 마지막 덩어리는 제가 찾고있는 것입니다. 고마워, 제리. –