gpt4 book ai didi

ios - 以编程方式使用带有 TabbarViewController 的 SWReavealController 创建幻灯片菜单 - swift

转载 作者:搜寻专家 更新时间:2023-10-31 22:39:16 25 4
gpt4 key购买 nike

我正在创建一个包含 TabBarViewController 的示例应用程序,并且我还使用 SWRevealViewController 实现了幻灯片菜单,但问题是它没有显示幻灯片菜单。

这里我在appdelegate中设置了rootViewController

 window = UIWindow(frame: UIScreen.main.bounds)

window?.makeKeyAndVisible()

window?.rootViewController = TabBarController()

这是我的 TabBarController,我实现了 2 个 tabBar 项,第一个 tabBar 项应该有滑动菜单

    let homeController = HomeController()
let homeNavigation = UINavigationController(rootViewController: homeController)
homeNavigation.tabBarItem.title = "Home"
let menuController = MenuViewController()
let swReveal = SWRevealViewController(rearViewController: homeNavigation, frontViewController: menuController)
swReveal?.toggleAnimationType = SWRevealToggleAnimationType.easeOut
swReveal?.toggleAnimationDuration = 0.30

let favController = FavoriteController()
let favNavigation = UINavigationController(rootViewController: favController)
favNavigation.tabBarItem.title = "Favorite"
viewControllers = [homeNavigation, favNavigation]

对于 MenuController 我设置了一些用于显示菜单的导航按钮

    let menuButton = UIBarButtonItem(title: "Menu", style: .plain, target: self.revealViewController(), action: #selector(slideMenu))
self.navigationItem.leftBarButtonItem = menuButton
@objc func slideMenu() {

if revealViewController() != nil {
revealViewController().revealToggle(animated: true)
revealViewController().rearViewRevealWidth = (view.bounds.width * 80 ) / 100
}
else {
print("no reveal view")
}
}

最佳答案

您需要在 didFinishLaunchingWithOptions 方法中配置 SWRevealViewController,如下所示:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.

let frontNavigationController:UINavigationController
let rearNavigationController:UINavigationController
let revealController = SWRevealViewController()
var mainRevealController = SWRevealViewController()

frontNavigationController = UINavigationController(rootViewController: TabBarController())
rearNavigationController = UINavigationController(rootViewController: MenuViewController())

frontNavigationController.navigationBar.isHidden = true
rearNavigationController.navigationBar.isHidden = true

revealController.frontViewController = frontNavigationController
revealController.rearViewController = rearNavigationController
revealController.delegate = self
mainRevealController = revealController

window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = mainRevealController
self.window?.makeKeyAndVisible()

return true
}

并在您的 HomeController 中替换

let menuButton = UIBarButtonItem(title: "Menu", style: .plain, target: self.revealViewController(), action: #selector(slideMenu))

let menuButton = UIBarButtonItem(title: "Menu", style: .plain, target: self, action: #selector(slideMenu))

并删除

let menuController = MenuViewController()
let swReveal = SWRevealViewController(rearViewController: homeNavigation, frontViewController: menuController)
swReveal?.toggleAnimationType = SWRevealToggleAnimationType.easeOut
swReveal?.toggleAnimationDuration = 0.30

从您的 TabBarController 和您的最终代码将是:

func customTabbar (){

let homeController = HomeController()
let homeNavigation = UINavigationController(rootViewController: homeController)
homeNavigation.tabBarItem.title = "Home"

let favController = FavoriteController()
let favNavigation = UINavigationController(rootViewController: favController)
favNavigation.tabBarItem.title = "Favorite"

let servicePhoneCollectionFLowLayoutInstance = UICollectionViewFlowLayout()
let serviceTabbarFlowLayoutInit = ExploreController(collectionViewLayout: servicePhoneCollectionFLowLayoutInstance)

let exploreController = serviceTabbarFlowLayoutInit
let exploreNavigation = UINavigationController(rootViewController: exploreController)
exploreNavigation.tabBarItem.title = "Explore"


let moreController = DetailViewController()
let moreViewController = UINavigationController(rootViewController: moreController)
moreViewController.tabBarItem.title = "Tools"
viewControllers = [homeNavigation, favNavigation, exploreNavigation, moreViewController]
}

有关更多信息,请查看您更新的项目 HERE .

这是工作代码 SWRevealViewController with UINavigationController and UITabBarController 通过 Storyboard (Swift 4)

https://stackoverflow.com/a/51725803/10150796

关于ios - 以编程方式使用带有 TabbarViewController 的 SWReavealController 创建幻灯片菜单 - swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51278402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com