2009-12-30 3 views
0

UIViewController 계층을 관리하기 위해 UINavigationController를 사용하고 있습니다. 이러한 UIViewController 중 하나를 위해, 나는 (특정 조건에 따라) 프로그래밍 방식으로보기 경계를 변경해야합니다 그래서 setBounds 사용하고 잘 작동하고 있습니다.UIView 및 -setBounds 문제

내 문제는 다음과 같습니다.이 뷰 경계를 변경 한 다음 UINavigationController 스택에 다른 UIViewController를 푸시 한 다음 마지막 UIViewController를 팝하면 내 경계 교환이 손실됩니다. 내 UIView 다시 그려진 것 같아요하지만 경계 수정 여전히 라이브있을 줄 알았는데.

보기가 나타난 후에 UIView 범위를 다시 변경할 수 있지만 사용자가보기 경계 수정을 알 수 있습니다.

팁이 있습니까? 일반적인 상황입니까, 아니면 내 UIView XIB에서로드 된 및 매개 변수 또는 뭔가 놓친 때문에 때문입니까?

감사합니다 :)

편집 : 그냥 내 UIView의 경계를 잘

답변

0

당신은 아마 -viewWillAppear:에 (처음 포함) 경계-설정을 모두 수행하고자합니다. 초기 푸시와 팝 업 모두에서 화면에 표시되기 전에 호출되어야합니다.

+0

그 최선의 선택이 될 것이지만 불행히도 내 경계 UINavigationController 대리인 (이 경계 수정은보기에서 독립적이므로 수정 내 모든보기에서 발생할 수 있습니다) – Vivi

+0

동일한 대리자 메서드는 navigationController : willShowViewController : animated :입니다. 그 경계를 다시 설정하면 어떤 일이 벌어 지나요? –

+0

willShowViewController 메서드에서 경계를 변경하면 현재 경계가 표시 전에 덮어 쓰여 있으므로 현재는 경계 수정이 didShowViewController에서 수행됩니다. – Vivi

0

로보기 가능성이 설정을 자동 크기했다 (애니메이션 중) 스택에 새로운 UIViewController에 밀어 전에 변경났습니다. 당신이 원하지 않으면 0으로 설정 자동 크기 :

myView.autoresizingMask = 0; 
+0

그냥 시도했지만 여전히이 문제가 있습니다 – Vivi

0

어디에서 경계를 변경하고 있습니까? 어쩌면 viewWillAppear/didAppear와 같은 것으로 써야 할 것입니다. 그래서 다음 View Controller가 스택에서 빠져 나올 때마다 바운드가 변경됩니다.

+0

내 경계가 UINavigationController 대리자에 의해 변경되었습니다. willShowViewController 메서드와 didShowViewController 메서드로 내 조건을보고 있습니다. – Vivi

+0

viewWillAppear에서 읽은 변수를 willShowViewController에 설정 한 다음 경계 값이 수정 된 이유는 무엇입니까? 어쨌든 Nav Controller Delegate에서 특정보기를 수정하는 것은 이상한 것처럼 들립니다. – bpapa

+0

나는 이것이 이상하다는 데 동의하지만 이는 애플리케이션과 독립적 인 광고 디스플레이 어를 만드는 데 가장 좋은 해결책이다. 우리는 애플리케이션과 뷰 컨트롤러를 변경하기를 원하지 않기 때문에이 델리게이트 내에서 모든 것이 필요합니다. willShowViewController 메서드에서 경계를 변경하면 경계가 분명히 표시 전에 덮어 쓰여지므로 현재 경계 변경이 didShowViewController에서 수행됩니다 (사용자가 수정을 눈치 챘을 수 있습니다) – Vivi