ios - 单击时如何将选项卡栏项目分配给特定的 View Controller ?

标签 ios swift xcode

import UIKit
import ARNTransitionAnimator
import AVFoundation
import MediaPlayer

final class ViewController: UIViewController, AVAudioPlayerDelegate{

@IBOutlet fileprivate(set) weak var containerView : UIView!
@IBOutlet fileprivate(set) weak var tabBar : UITabBar!
@IBOutlet fileprivate(set) weak var miniPlayerView : LineView!
@IBOutlet fileprivate(set) weak var miniPlayerButton : UIButton!    
@IBOutlet  weak var miniPlay: UIButton!

@IBOutlet weak var tabone: UITabBarItem!

private var animator : ARNTransitionAnimator?
fileprivate var modalVC : ModalViewController!


override func viewDidLoad() {
    super.viewDidLoad()

    tabBar.barTintColor = UIColor.black

    let musicVC = MusicViewController()


    }
}

我正在尝试将选项卡栏项目分配给 View Controller 。当前的 View Controller 不是一个特殊的选项卡栏 Controller 。(我知道在 Storyboard中制作选项卡栏 Controller 会更容易)。选项卡栏是在 Storyboard 中创建的对象,并通过 IBoutlet 连接,并且它的第一个栏项目也已​​连接。有没有办法以编程方式分配连接?

最佳答案

我建议在 UIViewController 上进行扩展,它将选项卡栏项目属性复制到其 UITabBarItem 实例。

extension UIViewController {
    func copyTabBarItem(_ item: UITabBarItem) {
        tabBarItem.badgeColor = item.badgeColor
        tabBarItem.badgeValue = item.badgeValue
        if #available(iOS 11.0, *) {
            tabBarItem.isSpringLoaded = item.isSpringLoaded
        }
        tabBarItem.selectedImage = item.selectedImage
        for state in [UIControlState.application, UIControlState.disabled, UIControlState.focused, UIControlState.highlighted, UIControlState.normal, UIControlState.reserved, UIControlState.selected] {
            tabBarItem.setBadgeTextAttributes(item.badgeTextAttributes(for: state), for: state)
        }
        tabBarItem.titlePositionAdjustment = item.titlePositionAdjustment
    }
}

关于ios - 单击时如何将选项卡栏项目分配给特定的 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46283003/

相关文章:

ios - 在多个平台上设置使用 Realm 的 Xcode 框架

ios - 通过 URL Scheme 打开自定义 LaunchScreen.storyboard

ios - 在 XCode : Exception Breakpoints 中调试

xcode - IOS 4.2 和 Xcode 3.2 的通用应用程序

ios - 在 CloudKit 中处理多对多关系

ios - 如何在不破坏用户数据的情况下安装 ipa 更新

ios - 在 iOS 应用程序中显示图像时出现错误

arrays - 检测一个 SKSpritenode 与许多 SKSpritenodes Swift 的接触

ios - Swift 中的函数重载

ios - 无法识别的选择器发送到实例 NSTimer Swift