【问题标题】:UITabbar without controller没有控制器的UITabbar
【发布时间】:2010-03-25 15:49:54
【问题描述】:

我有一个简单的应用程序,其中唯一的视图控制器有一个到 UITabBar 的出口。它还实现了 UITabBarDelegate 并设置为 UITabBar 的委托:

@interface TheMainViewController : UIViewController <UITabBarDelegate>
{
      IBOutlet UITabBar *theTabBar;
}

我实现了以下方法,只要我的 4 个 UITabBarItems 中的任何一个被点击,就会调用该方法。我试着做一些非常简单的事情:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
      tabBar.selectedItem = [tabBar.items objectAtIndex:0];
      return;
}

理论上,它应该始终在我的第一个选项卡上保持选中状态,并且当我点击任何 UITabBarItem 时它可以完美运行(没有任何反应,第一个始终保持选中状态)。但是,当我触摸 UITabBarItem 并按住它时(没有离开我的手指),选择无论如何都会改变!调试中,一切都被正确调用了。

这就像更改 selectedItem 属性没有任何效果,因为用户仍然“向下”放置项目(手指放在它上面)。

什么是好的解决方法?我尝试重载 UITabBar 并弄乱 touchesBegan 和 touchesEnd 但他们甚至没有被调用。与 UITabBarItem 相同。

哦,请不要建议使用 UITabBarController,因为它对我的应用程序不够灵活。

真令人沮丧....谢谢!

【问题讨论】:

    标签: iphone uitabbar selecteditem uitabbaritem touches


    【解决方案1】:

    好像- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 当用户拿起他的手指而不是在那之前被调用。

    我知道您不想使用 UITabBarController 但它具有您想要的所有功能。为什么不想使用控制器?

    应该工作的UITabBarController委托方法:

     - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
    

    然后你可以在那里返回NO,选择不会改变。

    【讨论】:

    • 嗯,基本上我已经有了一大堆其他的视图,它们会根据标签栏的状态(不仅仅是滑入和滑出)进行动画处理。此外,我的标签栏不像控制器那样位于底部。切换到控制器需要我想避免的主要重构。至于您的其他评论,当您单击并按住 tabbaritem 时,即使实际项目仅在您释放时突出显示,“didselectitem”函数也会在一小段延迟后被调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多