首先创建根tabbarController作为window的根视图,在tabbarController中进行添加子视图控制器,这样就方便管理和层次感更好一些
func addChildViewController() {
//主页
addChileVC(childVC: FindViewController(),title:"发现",image:"tab0",selectedImage:"tab0on")
//关注
addChileVC(childVC: FollowViewController(), title: "关注", image: "tab1", selectedImage: "tab1on")
//我
addChileVC(childVC: MeViewController(), title: "我的", image: "tab2", selectedImage: "tab2on")
}
这样对于子控制器的管理就会更加简单
/**
添加子试图控制器
:param: childVC NavigationViewController的根视图类型
:param title tabbar item的文字
:param image tabbar item的默认图片的名称
:param selectedImage tabbar item 的选中状态下图片的名称
*/
func addChileVC(childVC:UIViewController,title:String,image:String,selectedImage:String) {
childVC.title = title;
childVC.tabBarItem.image = UIImage.init(named:image)
childVC.tabBarItem.selectedImage = UIImage.init(named:selectedImage)?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
//设置点击之后的颜色
childVC.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.orange], for: UIControlState.selected)
//设置导航控制器
let childNavigation = UINavigationController.init(rootViewController:childVC)
addChildViewController(childNavigation)
}
在子视图控制器Find中进行做跳转和传值操作
//设置背景颜色
self.view.backgroundColor = UIColor.cyan
NotificationCenter.default.addObserver(self, selector: #selector(notification(obj:)), name:NSNotification.Name(rawValue: "NotificationName") , object: nil)
//初始化
textField = UITextField.init(frame: CGRect(x:0,y:0,width:200,height:30))
textField.center = CGPoint.init(x:self.view.center.x, y:200)
//textField.textColor = UIColor.blue
// textField.backgroundColor = UIColor.green
textField.placeholder = "请输入内容!!!"
textField.font = UIFont.systemFont(ofSize: 14)
textField.layer.borderColor = UIColor.black.cgColor
textField.layer.borderWidth = 0.5
view.addSubview(textField)
let sendBtn = UIButton.init(frame:CGRect(x:0,y:0,width:100,height:30))
sendBtn.backgroundColor = UIColor.orange
sendBtn.setTitle("点我跳转", for: UIControlState.normal)
sendBtn.titleLabel?.font = UIFont.systemFont(ofSize: 14)
sendBtn.setTitleColor(UIColor.black, for: UIControlState.normal)
sendBtn.center = CGPoint.init(x: self.view.center.x, y: 280);
sendBtn.addTarget(self, action: #selector(sendBtnClick), for: UIControlEvents.touchUpInside)
view.addSubview(sendBtn)
//方法
func notification(obj: NSNotification) {
}
func sendBtnClick() {
let vc = DetailViewController()
vc.hidesBottomBarWhenPushed = true
vc.text = self.textField.text!
self.navigationController?.pushViewController(vc, animated: true)
}