iOS版:从视图中UITabBar / UINavigationController的应用在笔尖子视

2019-10-30 00:08发布

我在得到一个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: - 是有办法做到这一点?

目前,我已经实现了一个队列中的搜索,检查队列搜索方法,这似乎有点长篇大论。

Answer 1:

好吧,我不喜欢回答我的问题,但似乎我的担心是对的,基本上如果你想有一个UINavigationItem这是一个自定义视图(即把一个搜索栏和其他各种按钮了导航控制器),并能够从另一个选项卡切换和填充他们一个标签栏控制器上,那么你就需要把子视图在它自己的类,这是的UIViewController的一个子类,然后让代表团的朋友(这已经是),我提供在任何情况下的例子需要重复它,我已经把我的博客上这里。

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

如果有人不同意,认为这可能是简单的,请让我知道或将该帖子



文章来源: iOS: Setting text in nib subview from view in UITabBar/UINavigationController application