데이터가 변경 될 때 업데이트하라는 메시지가 나타납니다. 그러나보기가 보이지 않을 때 데이터가 변경되는 경우가 있습니다. 그렇다면 viewcontroller가 보이고 이벤트를 받아들이는 것을 어떻게 감지 할 수 있습니까? 당신이 할 수있는있는 tableview 인 경우에 ...내 viewcontroller가 표시되고 이벤트를 수락하는지 어떻게 알 수 있습니까?
감사합니다, 게리
데이터가 변경 될 때 업데이트하라는 메시지가 나타납니다. 그러나보기가 보이지 않을 때 데이터가 변경되는 경우가 있습니다. 그렇다면 viewcontroller가 보이고 이벤트를 받아들이는 것을 어떻게 감지 할 수 있습니까? 당신이 할 수있는있는 tableview 인 경우에 ...내 viewcontroller가 표시되고 이벤트를 수락하는지 어떻게 알 수 있습니까?
감사합니다, 게리
간단한 답변 : UINavigationController를 사용하는 경우 visibleViewController를 사용하여 별도의 부울 값을 추적 할 필요가 없습니다.
긴 답변 : 일반적으로 viewWillAppear 내부에서 reloadData를 호출하면 내 View에서 내 모델의 일부 추가 부분을 관찰해야한다는 표시입니다. reloadData 문제는 전체 테이블을 다시로드한다는 것입니다. 종종 테이블의 작은 부분 만 업데이트하면됩니다. 내 전략은 일반적으로 특정 시점이 표시되는지 여부에 관계없이 발생하는대로 필요한 부분 만 업데이트하는 것입니다. 그게 꽤 모호한 반응 인 것 같습니다. 아마도 당신의 샘플 코드가 좀 더 구체적인 코드 일 수 있습니다. ...
을 나는 viewWillAppear 및 viewWillDisappear 변경되는 부울을 추가 할 수 있지만 같은이 직접 상태를 감지하는 방법이 될한다고 보인다 다음과 같습니다.
[(UITableView *)[self view] reloadData];
viewController의보기에서 WiillAppear. 나는 확실하지 않습니다, 당신이 묻고있는 것이지만 어쨌든입니다.
당신은 아마 뷰의 창 속성을 확인할 수 있습니다
- (BOOL)isVisible
{
return view.window != NULL;
}
을하지만 난 BOOL
변수를 유지하는 것이 더 나은 생각합니다.
> 일반적으로 > 내에서 reloadData를 호출하는 것을 발견하면 내 View 관찰 할 필요가있다> 내 모델의 일부 추가 부분 동의. –
그래, 그게 내가 원하는거야. 그 줄은 'if (self.navigationController.visibleViewController! = self) { ...}'입니다. BTW, 나는 이것을 UITabBarController의 UIViewController에서 사용했습니다. – DrGary