2011-04-26 2 views
1

MonoTouch 개발을하고 있는데, 실제로 실행 한 문제를 파악할 수 없습니다.변경 사항이보기에 표시되기 전에 UIButton 대리자가 완전히 실행되어야하는 이유는 무엇입니까?

UIButton이 포함 된 ViewController가 있습니다. 이 버튼의 TouchDown 이벤트에 대리자를 추가했습니다. 이 대리자에서 WebService를 호출하고 단추의 색과 제목을 변경하려고합니다. 그러나 전체 대리자가 실행되기 전에는 아무 것도 단추에 표시되지 않습니다. 것은 웹 서비스가 오히려 느리기 때문에 단추의 색과 제목을 변경하여 대기중인 메시지를 사용자에게 제공하려고합니다.

코드 :

public override void ViewDidLoad() 
    { 

     View.BackgroundColor = UIColor.Black; 

     bookButton = new UIButton(new RectangleF(10,100,this.View.Frame.Width-10 ,40)); 

     bookButton.BackgroundColor = UIColor.Clear; 
     setButton(); 

     bookButton.TouchDown += delegate { 

      gymClass.book(); 
      setButton(); 
      tableView.ReloadData(); 
      NavigationController.PopViewControllerAnimated(true); 

     }; 

     this.View.AddSubview(bookButton); 

    } 

사람, 제발?

+0

tableView.ReloadData()에서 웹 서비스를 호출하고 있습니까? –

+0

gymClass.book() –

답변

4

대리인은 렌더링을 담당하는 주 스레드에서 실행되므로 반환 할 때까지 렌더러를 차단하고 있습니다.

+0

Aha. OK, 대신 TouchUpInside 이벤트를 사용하여이 문제를 해결했습니다. 고맙습니다. –

관련 문제