Sha256: 44309e8ed7bb48d00715c9607eedf8b5f5ec8e8d652055fb7bea9b1fa1b3e38b

Contents?: true

Size: 1.04 KB

Versions: 6

Compression:

Stored size: 1.04 KB

Contents

module ProMotion
  class TabBarController < UITabBarController

    def self.new(*screens)
      tab_bar_controller = alloc.init

      screens = screens.flatten.map { |s| s.respond_to?(:new) ? s.new : s } # Initialize any classes

      tag_index = 0
      view_controllers = screens.map do |s|
        s.tabBarItem.tag = tag_index
        s.tab_bar = WeakRef.new(tab_bar_controller) if s.respond_to?("tab_bar=")
        tag_index += 1
        s.navigationController || s
      end

      tab_bar_controller.viewControllers = view_controllers
      tab_bar_controller
    end

    def open_tab(tab)
      if tab.is_a? String
        selected_tab_vc = find_tab(tab)
      elsif tab.is_a? Numeric
        selected_tab_vc = viewControllers[tab]
      end

      if selected_tab_vc
        self.selectedViewController = selected_tab_vc
      else
        PM.logger.error "Unable to open tab #{tab.to_s} -- not found."
        nil
      end
    end

    def find_tab(tab_title)
      self.viewControllers.find { |vc| vc.tabBarItem.title == tab_title }
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ProMotion-2.0.0 lib/ProMotion/cocoatouch/tab_bar_controller.rb
ProMotion-2.0.0.rc5 lib/ProMotion/cocoatouch/tab_bar_controller.rb
ProMotion-2.0.0.rc4 lib/ProMotion/cocoatouch/tab_bar_controller.rb
ProMotion-2.0.0.rc3 lib/ProMotion/cocoatouch/tab_bar_controller.rb
ProMotion-2.0.0.rc2 lib/ProMotion/cocoatouch/tab_bar_controller.rb
ProMotion-2.0.0.rc1 lib/ProMotion/cocoatouch/tab_bar_controller.rb