2011-08-30 1 views
3

사용자가보기 아래에 presentModalViewController:으로 표시되는보기와 상호 작용할 때 어떻게 커브 업 뷰 업데이트를 실시간으로 만들 수 있습니까?UIModalTransitionStylePartialCurl을 사용할 때 presentModalViewController 뒤에 업데이트하는 방법은 무엇입니까?

는 행동은 내가 원하는 :

  1. 사용자가보기 설정 버튼을 탭.
  2. 사용자가보기 설정 화면에서 제어를 누릅니다. 보기 설정을 취소하는 대신보기가 백그라운드에서 자동으로 업데이트됩니다.
  3. 사용자가보기 설정을 무시하는 항목을 누릅니다.

지도에서지도, 위성, 하이브리드가 자동으로 풀리지 않고 표시를 업데이트 한 경우를 상상해보십시오.

설정 컨트롤러에서 메인보기 컨트롤러로 변경된 알림을받을 수 있습니다. 메인 뷰 컨트롤러는 자신의 부분을 다시 그려야한다는 신호를 업데이트 할 수 있지만 화면을 실제로 업데이트하는 것은 간헐적입니다. 그것은 5 번 연속으로 작동하고, 두 번 작동하지 않으며, 연속 5 번 작동합니다. 그러나 모달보기를 닫으면 항상 아래의보기가 표시되므로 내보기의 렌더링 된 이미지가 때때로 캐시되거나 요청에 따라 다시 그려지지 않는다고 가정합니다. 그러나 나는 이것을 검증 할 수있는 방법을 생각할 수 없다.

이것은 장치와 시뮬레이터 모두에서 발생합니다.

답변

1

이 동작의 근본 원인이 여러 개있을 수 있지만 UIKit 뷰에 '지연된'또는 '간헐적 인'업데이트가 발생하는 일반적인 문제는 다음과 같습니다.

현재보기 (또는 표시된보기)를 업데이트하는 문이 주 큐가 아닌 디스패치 대기열에서 실행중인 경우 UIKit은 실제 UI 업데이트에서 일관되지 않은 결과와 타이밍을 생성 할 수 있습니다. 일반적으로 UI를 업데이트하는 문에 중단 점을 넣고 Xcode의 왼쪽 디버거보기에 표시된 '대기열'의 이름을 검사하여 알 수 있습니다. 'com.apple.main-thread'여야합니다. 그렇지 않은 경우 문제가 될 수 있습니다. 이것은 네트워크 API와 같은 몇몇 대리자 메소드에서 발생할 수 있습니다.

dispatch_async (dispatch_get_main_queue(),^({}});에서 UI 업데이트를 래핑 해보십시오. 도움이되는지 확인하십시오! 필요할 때만이 작업을 수행하고 언제나처럼 블록 안전 기술을 사용하도록주의해야합니다.

부분 컬 전환을 사용하여 표시되는보기 컨트롤러가있는 iPad 시뮬레이터를 사용하여 iOS 7.0.3 용 새로운 범용 앱에서이를 테스트했습니다. 위의 코드에서 배경 대기열을 사용하여 제시된보기를 닫을 때 간헐적 인 업데이트와 '스냅'업데이트를 포함하여 원래의 문제를 복제 할 수있었습니다. 메인 대기열로 전환하면 모든 것이 A-OK로 작동했습니다.

이 도움이 알려줘 또는 다른 문제 :이 있다면

+0

은 이론적으로 모든 것을 이미 주요 큐에 있어야합니다. 그러나 나는 이것을 조사 할 것이다. (그리고 적어도, 그것은 도움이된다.) –

+0

고마워! 계속 게시 해 ... – Abominabl31