
类UITabbarController是一个特殊的UIVIEwController,它可以包含多个UIVIEwController,并且在页面底部显示一个Tabbar作为UIVIEwController的切换显示开关。
如下案例,展示了包含两个UIVIEwController的UITabbarController,可以通过底部的Tabbar来切换显示:
import UIKit class Page1: UIVIEwController { overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() let cc = UILabel(frame: CGRect(x: 10,y: 50,wIDth: 200,height: 50)) cc.text = "Page #1" cc.textcolor = UIcolor.black self.vIEw.addSubvIEw(cc) } } class Page2: UIVIEwController { overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() let cc = UILabel(frame: CGRect(x: 10,height: 50)) cc.text = "Page #2" cc.textcolor = UIcolor.black self.vIEw.addSubvIEw(cc) } } class Tabbar: UITabbarController,UITabbarControllerDelegate { overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() delegate = self } overrIDe func vIEwWillAppear(_ animated: Bool) { vIEwControllers = [Page1(),Page2()] let r = UIImage.imageWithcolor(UIcolor.black) vIEwControllers![0].tabbarItem = UITabbarItem(Title: "Page 1",image:r,tag:0) vIEwControllers![1].tabbarItem = UITabbarItem(Title: "Page 2",image: r,tag:1) } //Delegate methods func tabbarController(_ tabbarController: UITabbarController,dIDSelect vIEwController: UIVIEwController) { print("dID select vIEwController: \(vIEwController.tabbarItem.tag)") } } @UIApplicationMain class AppDelegate: UIResponder,UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication,dIDFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { self.window = UIWindow(frame: UIScreen.main.bounds) self.window!.rootVIEwController = Tabbar() self.window!.rootVIEwController!.vIEw.backgroundcolor = UIcolor.white self.window?.makeKeyAndVisible() return true } } // same code extension UIImage { class func imageWithcolor(_ color: UIcolor) -> UIImage { let rect = CGRect(x: 0.0,y: 0.0,wIDth: 10.0,height: 10.0 ) UIGraphicsBeginImageContext(rect.size) let context = UIGraphicsGetCurrentContext() context?.setFillcolor(color.cgcolor) context?.fill(rect) let image = UIGraphicsGetimageFromCurrentimageContext() UIGraphicsEndImageContext() return image! } } //let r = UIImage.imageWithcolor(UIcolor.redcolor()).imageWithRenderingMode(.AlwaysOriginal) //let b = UIImage.imageWithcolor(UIcolor.bluecolor()).imageWithRenderingMode(.AlwaysOriginal) 可以点击屏幕显示的下方按钮切换视图控制器。
本案例中,共有三个需要关注的类:
Page1,Page2。都是UIVIEwController的子类,内含一个UILabel区别显示为Page #1,Page #2
Tabbar 是UITabbarController的子类,实现协议UITabbarControllerDelegate,并在vIEwDIDLoad时设置委托到自身;属性vIEwControllers是一个数组,用于装入多个UIVIEwController的实例,当执行:
func vIEwWillAppear(_ animated: Bool)
初始化此数组,创建需要选择的UIVIEwController实例进来。
Tabbar就是一个UIVIEwController的子类,因此可以把它设置到self.window!.rootVIEwController上,从而成为window的rootVIEwController。
总结以上是内存溢出为你收集整理的Swift iOS : UITabBarController全部内容,希望文章能够帮你解决Swift iOS : UITabBarController所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)