UISearchDisplay의 텍스트 값을 다른보기에서보기로드시 프로그래밍 방식으로 설정하는 데 문제가 있습니다. 내 질문이 내 문제를 복잡하게 만들었습니다. 뭔가를 놓친 것 또는 나는 사고의 올바른 길에 있습니다.iOS : UITabBar/UINavigationController 응용 프로그램의보기에서 nib 하위보기의 텍스트 설정
다음과 같은 상황이 있습니다. 루트보기로 UITabBarController가 있고, 두 개의 탭이 있으며, 둘 다 UINavigationController 설정을 가지고 있으므로 필요에 따라 뷰를 푸시 할 수 있습니다.
탭 1에는 범주 목록이 채워진 UITableViewController가 있습니다.
Tab 2는 기본보기에 MapView가 있지만 rightBarButtonitem 영역에 다양한 단추와 UISearchDisplay를 넣을 사용자 지정 UINavigationItem보기를 수행했습니다.
mapview 레이아웃과 사용자 정의 탐색 항목은 두 개의 개별 뷰 객체로 동일한 펜촉으로 저장됩니다. 탭 2의 viewDidLoad에()에서 내가 함께 프로그래밍 방식 rightBarButtonItem를 초기화 :
UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithCustomView:buttonBar];
self.navigationItem.rightBarButtonItem = btnItem;
[btnItem release];
모두가 화재, ButtonBar 컨트롤은 searchWhat로 함께 IBOutlet까지 연결되어와 나는지도보기의 컨트롤러 클래스 내에서이 개체에 이야기 할 수 있습니다.
사용자가 탭 1에 있고 셀을 두드리는 경우 탭 2로 전환하여 searchWhat.text를 채운 다음 누군가가 검색에 직접 입력 한 것처럼 검색 코드를 실행하려고합니다.
로드 순서에 따라 문제가 발생하여보기에 채워집니다.
나는 아무 문제없이 1 일부터 2 탭에 액세스하고 같은과 함께 표시 얻을 수 있습니다 : catList 및 SearchViewController에 대해, 그들이 존재를 걱정하지 마십시오
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Quick Category cell tapped at row %d", indexPath.row);
self.tabBarController.selectedIndex = 1; // change to the search view controller
//[self.tabBarController.selectedViewController viewDidAppear:YES];
UINavigationController *nav = (UINavigationController *)self.tabBarController.selectedViewController;
SearchViewController *srch = [nav.viewControllers objectAtIndex:0];
//NSLog(@"%@", [srch description]);
[srch queueSearchByType:kSearchTypeQuickCategories withData:[catList objectAtIndex:indexPath.row]];
[srch viewDidAppear:YES];
}
이 비트 탭을 전환하기 위해 노력하고 .
사용자가 응용 프로그램을 시작하고 탭 1에서 항목을 선택하면 탭 2가 나타나지만 검색 표시 텍스트의 값은 설정되지 않습니다. 왜냐하면 viewDidLoad 및 viewDidAppear은 다른 스레드에서 호출되므로 뷰가로드되고 설정되는 동안 queueSearchByType : withData : 실행이 호출됩니다.
사용자가 탭 2를 선택하고 (따라서 하위보기를 초기화 한 후) 탭 1과 항목을 선택하면 검색 표시 텍스트를 채울 수 있습니다.
먼저 탭 지정 순서를 바꿀 수 없으므로 프로젝트 사양이 먼저 카테고리 검색이므로 내비게이션 막대에 sub2가로드됩니다.
나는 아주 간단한 것을 놓쳤습니까? 내가해야 할 일은 queueSearchByType을 호출하기 전에 두 번째 탭이 완전히 나타날 때까지 기다리는 것입니다. withData : -이 방법이 있습니까?
현재 큐 검색을 구현했으며 큐 검색 접근 방식을 확인했습니다. 이것은 약간 길어 보입니다.