我在得到一个UISearchDisplay的文本值一个问题来编程的看法的负荷由另一视图设置,我的问题是,我有我的过于复杂的问题,错过了一些东西还是我的思维在正确的轨道上。
这里的情况:我有一个的UITabBarController作为我的根视图,有2个选项卡,都有一个UINavigationController的设置,以便根据需要我可以把意见。
标签1具有被填充有类别的列表一个UITableViewController。
标签2具有MapView的,在它的主视图,但我做了一个自定义视图UINavigationItem提上rightBarButtonitem区域各种按钮和UISearchDisplay。
的MapView布局和自定义导航项被存储在相同的笔尖作为两个单独的视图对象。 在标签2的viewDidLoad(),我初始化rightBarButtonItem编程用:
UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithCustomView:buttonBar];
self.navigationItem.rightBarButtonItem = btnItem;
[btnItem release];
一切都激发起来,按钮栏是有线长达一个IBOutlet作为searchWhat,我可以从MapView类的控制器类中谈论到这个对象。
如果用户在选项卡1和点击一个细胞,我希望它切换到标签2和填充searchWhat.text,然后执行搜索代码,如果有人在搜索自己输入了。
就是我遇到的麻烦是负载的顺序和填充一个视图。
我从第一次访问第二个选项卡,没有任何问题,并把它的东西,如出现:
- (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];
}
不要担心catList和SearchViewController,它们的存在和该位工程切换标签。
这里的问题,但如果用户启动应用程序,并在标签1,标签2次出现选择一个项目,但搜索显示文本的值不获取设置 - 因为viewDidLoad中和viewDidAppear被称为在另一个线程使queueSearchByType的执行:withData:被调用,而鉴于仍在加载和设置。
如果用户选择选项卡2(因此初始化子视图),然后选择选项卡1和一个项目,它可以填充在搜索显示文本。
我不能只是改变标签的顺序,使TAB2是第一,因此加载它的子视图导航栏作为项目规格类别搜索第一。
我错过了一些非常简单呢? 我需要做的是等待第二个选项卡调用queueSearchByType之前充分地显现出来:withData: - 是有办法做到这一点?
目前,我已经实现了一个队列中的搜索,检查队列搜索方法,这似乎有点长篇大论。