【问题标题】:iOS: Multiple selectors for toolbar button based on viewiOS:基于视图的工具栏按钮的多个选择器
【发布时间】:2012-02-09 22:47:56
【问题描述】:

我有一个视图,就像日历一样,有日视图、列表视图和月视图。它们位于工具栏中的分段控件中。当您更改分段控件时,中间视图被替换,导航栏和工具栏保持不变。我还有另一个按钮,叫做“今天”。当按下它时,我希望它触发当前正在查看的类中的选择器。 IE:如果加载了 dayview,它将在 DayViewController 中运行选择器。有没有办法根据当前显示的视图来拥有多个选择器?

我的结构是这样的。

RootViewController

  • 已创建工具栏和导航栏
  • 如果在工具栏中选择了 Day,则将 DayViewController 视图加载到中间
  • 如果在工具栏中选择了 List 则 ListViewController 视图被加载到中间

DayViewController

  • (选择器)在日视图中滚动到今天是今天不是当前视图中的日期。

ListViewController

  • (选择器)滚动到带有今天日期的当前部分

【问题讨论】:

    标签: iphone objective-c ios5 uinavigationcontroller


    【解决方案1】:

    让你的按钮指向一个通用方法,比如- (void)todayButtonTapped,然后决定做什么:

    - (void)todayButtonTapped;
    {
       if (<check if day is presented>) {
           [self.dayViewController ....
       } else if (<check if week is presented>) {
           [self.weekViewController ...
       } else {
           [self.monthViewController ...
       }
    }
    

    更新

    要在您的rootViewController 中进行这项工作,请添加一个名为currentController 之类的新属性。现在,每次更改显示的控制器时,都会更新此属性以指向该控制器。现在你要做的就是确保你的控制器都响应类似的方法并调用它

    [self.currentController todayTapped:sender];
    

    【讨论】:

    • 好的,那么在我的 RootViewController 中有方法,并根据视图调用类中的适当方法吗?
    • 我假设工具栏被添加到 rootViewController 中以便可以响应,rootViewController 还应该知道加载了哪个控制器并能够适当地转发消息。您的结构似乎有点奇怪,tabbarcontroller 是否不符合您的需求?
    • 我的视图中没有.loaded
    • 您必须编写某种逻辑才能知道加载了哪个视图
    • 这是问题的一部分。您可以扩展您的帖子以包含此内容吗?
    猜你喜欢
    • 2018-09-29
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2012-03-13
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多