当前位置:  开发笔记 > 编程语言 > 正文

iPhone:tab的selectedIndex值应该是一致的,但不是

如何解决《iPhone:tab的selectedIndex值应该是一致的,但不是》经验,为你挑选了1个好方法。

这应该是如此简单......但是有些事情正在发生.

我的设置如下:

MainViewController
   Tab Bar Controller
      4 tabs, each of which loads WebViewController

我的AppDelegate包含一个ivar,tabBarController,它连接到标签栏控制器(这都是在Interface Builder中设置的).最左边的标签在IB中标记为"已选择".

在WebViewController的viewWillAppear方法中,我需要知道刚刚选择了哪个选项卡,以便我可以加载正确的URL.我通过打开appDelegate.tabBarController.selectedIndex来做到这一点.

当应用程序首次运行并选择最左侧的选项卡时,selectedIndex是一个很大的垃圾值.之后,我得到0到3的值,它应该是,但它们是随机顺序.不仅如此,我触摸的每个标签每次都会报告不同的值.

这个应用程序现在非常简单,我无法想象我可以做些什么来让事情变得错误.

有没有人看到(并希望解决)这种行为?

更新:我们有代码请求.没什么好看的.

标签栏控制器在applicationDidFinishLaunching中加载:

[self.mainViewController view];  //force nib to load
[self.window addSubview:self.mainViewController.tabBarController.view]

除了tabBarController的合成和发布之外,MainViewController.m中目前没有任何代码.

来自WebVewController.m:

- (void)viewWillAppear:(BOOL)_animation {
    [super viewWillAppear:_animation];

    NSURL *url;
    switch([S_UIDelegate mainViewController].tabBarController.selectedIndex) {
        case 0: url = [NSURL URLWithString:@"http://www.cnn.com"];
            break;
        case 1: url = [NSURL URLWithString:@"http://www.facebook.com"];
            break;
        case 2: url = [NSURL URLWithString:@"http://www.twitter.com"];
            break;
        case 3: url = [NSURL URLWithString:@"http://www.google.com"];
            break;
        default: url = [NSURL URLWithString:@"http://www.msnbc.com"];
    }

    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [webView loadRequest:request];
}

这是我看到随机值的地方.顺便说一下,S_UIDelegate只是一个宏,它返回一个指向app delegate的指针.我正在使用其他人的应用程序模板,并且他是#define的忠实粉丝以节省打字.



1> Janine..:

一位同事刚刚提供了答案.在viewWillAppear中尚未设置selectedIndex; 当我切换到使用viewDidAppear时,它按预期工作.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有