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/