2013-07-22 2 views
3

단추의 제목 레이블을 설정하는 데 문제가 있습니다. 기본적으로 나는 2 개의 스크린을 가지고 있고 그들 모두는이 버튼을 가지고 있지만, 둘 다 서로 다른 "숫자"를 가지고있다. 무슨 일이 일어나고있는 것은 버튼 제목이 내가 현재 사용중인 화면을 정확하게 반영하기까지 1-2 초가 걸리는 매우 눈에 띄는 지연입니다. 나는 [self.button reloadInputViews];을 넣으려고했으나 아직 다시로드하지 않았고 여전히 지연이 있습니다.UIButton 제목 레이블 지연

[self.button setTitle:[NSString stringWithFormat:@"%d", [stringValue integerValue]] 
      forState:UIControlStateNormal]; 

누군가 내가 버튼에 제목 라벨을 새로 고칠 수있는 방법을 알고 있습니까? 도와 주셔서 감사합니다!

EDIT : 컨텍스트에 대해 더 많은 코드

 self.guestsField = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    self.guestsField.frame = CGRectMake(self.guestsLabel.frame.origin.x + self.guestsLabel.frame.size.width, 100, 40, 30); 
    self.guestsField.titleLabel.font = [UIFont systemFontOfSize:20]; 
    [self.guestsField addTarget:self action:@selector(pressGuestsField:) forControlEvents:UIControlEventTouchDown]; 
    [self.view addSubview:self.guestsField];' 

myFunction이 {
NSDictionary와의 딕셔너리 * = [사용자 정보 알림]; 그것을 고정

if ([dict count] > 0) 
    { 
     [self.guestsField setTitle:[NSString stringWithFormat:@"%d", [GetOrder.NumberOfGuests integerValue]] forState:UIControlStateNormal]; 
    } 

}

: 다른 스레드에서 myFunction이 실행되었다. 기본 스레드의 setTitle을 그냥 수행했습니다.

+2

이 코드를 어디에서 호출하고 있으며 그 전후에 어떤 일이 발생합니까? UI 스레드는 제목을 자동으로 업데이트하지만 다른 작업을 수행하는 데 바쁜 경우 기다려야합니다. –

+0

@MarcusAdams에 동의합니다 ... 뭔가 UI를 방해하는 주요 스레드를 씹고있다. – Dan

+0

한 화면에서 다른 화면으로 전환하는 즉시 실행되는 함수에서이 코드를 호출합니다. –

답변

1

서버에서 데이터를 검색 할 때까지 레이블을 설정할 때까지 기다리고있는 경우 지연이 발생할 수 있습니다. 네트워크 코드를 주석 처리하고 레이블이 즉시 업데이트되는지 확인하십시오.

+0

여전히 지연됩니다. 그러나 내가 알아챈 한 가지는 화면 1에서 화면 2로 바뀌고 제목이 "2"로 변경되기 전에 버튼을 클릭하면 거의 즉시 2로 바뀝니다. : S –

+1

일부 코드를 올리십시오. 당신이하는 일을 실제로 보지 못해서. – JonahGabriel

관련 문제