0

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 : -이 방법이 있습니까?

현재 큐 검색을 구현했으며 큐 검색 접근 방식을 확인했습니다. 이것은 약간 길어 보입니다.

답변

0

좋아, 나는 자신의 질문에 답하고 싶지 않지만 기본적으로 사용자 정의보기 인 UINavigationItem을 원한다면 내 두려움이 옳았다. (예 : 검색 막대와 다양한 다른 단추를 탐색 컨트롤러) 및 수 전환 할 수 및 탭 표시 줄 컨트롤러에서 다른 탭에서 채우고 UIViewController 하위 클래스 인 자신의 클래스에있는 하위 뷰를 넣을 필요가 다음 위임을 친구 (그것은 이미), 아무도 그것을 반복 할 필요가있는 경우를 대비하여 여기에 블로그를 올려 놓았습니다. 사람이 동의하고이 간단 할 수 있다고 생각

http://www.jamesrbrindle.com/developer/ios-developer/howto-add-a-custom-uinavigationitem-to-a-uinavigationcontroller-with-delegation.htm

있으면 알려 주시기 또는이 게시물을 평가 해주십시오