如何在没有UITabBarController的情况下使用UITabBar?

时间:2017-08-18 20:32:42

标签: ios swift uitabbar

我想在iPhone屏幕的顶部实现一个标签栏,并希望能够在不同的视图中导航。我使用了委托方法,这是它在故事板中的样子:

Click here to see the screenshot

但是,因为我无法将TabBar委托给多个容器,所以我实现的代码似乎不起作用,这里是:

class PersonnesController: UIViewController, UITabBarDelegate {

    @IBOutlet weak var tabBar : UITabBar!
    @IBOutlet weak var comptesContainer : UIView!
    @IBOutlet weak var membreContainer : UIView!
    @IBOutlet weak var discussionContainer : UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        tabBar.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func tabBarDelegate(tabBar: UITabBar!, didSelectItem item: UITabBarItem!) {

        switch item.tag {
            case 1:
                comptesContainer.isHidden = false
                membreContainer.isHidden = true
                discussionContainer.isHidden = true

            case 2:
                comptesContainer.isHidden = true
                membreContainer.isHidden = false
                discussionContainer.isHidden = true

            case 3:
                comptesContainer.isHidden = true
                membreContainer.isHidden = false
                discussionContainer.isHidden = true

            default:
                comptesContainer.isHidden = false
                membreContainer.isHidden = true
                discussionContainer.isHidden = true
        }
    }
}

真正的问题似乎是我只能将TabBar委托给一个容器,而不是委托给三个容器。我怎么能做到这一点?

PS:我发现的最佳回复是here但是我没有实现它,我不知道他/她如何设法多次委派。

2 个答案:

答案 0 :(得分:1)

我的问题是,为什么不使用UITabBarController?只要没有人调用委托(这就是UITabBarController的功能),实现委托就不会做你想做的事。

答案 1 :(得分:0)

您确定tabbar的委托是否已设置为视图控制器?

.card {
  height: 300px;
  width: 800px;
  border: 2px solid grey;
  display: inline-block;
}

.cardImg {
  display: inline-block;
  height: 100%;
  width: 300px;
  border: 1px solid black;
  background: url(https://mdn.mozillademos.org/files/6457/mdn_logo_only_color.png)
}

.cardContent {
  display: inline-block;
  vertical-align: top;
}

你可以尝试一下,看看是否正在调用委托功能吗?