gpt4 book ai didi

ios - 用于查看的选项卡栏,关闭时返回到上一个选定的 View

转载 作者:行者123 更新时间:2023-11-30 12:32:40 25 4
gpt4 key购买 nike

我正在使用 swift 开发一个 iOS 应用程序,其中有一个带有 5 个选项卡栏项目的 TabBarController。它们全部指向导航 Controller ,然后指向 View Controller 。其中之一我想显示一个没有选项卡栏的 View Controller ,当用户按下取消时,它应该返回到所选的上一个选项卡栏项目/ View (以前 - 对于冗余感到抱歉)。它们都通过“关系” View Controller ”与“ View 名称”链接/引用,但我没有任何特定的转场或任何内容。

这是我在 viewDidLoad 函数中调用的特定“按钮”的代码:

func setupMiddleButton() {
let menuButton = UIButton(frame: CGRect(x: 0, y: 0, width: 64, height: 64))
var menuButtonFrame = menuButton.frame
menuButtonFrame.origin.y = self.view.bounds.height - menuButtonFrame.height
menuButtonFrame.origin.x = self.view.bounds.width/2 - menuButtonFrame.size.width/2
menuButton.frame = menuButtonFrame

menuButton.backgroundColor = UIColor.white
menuButton.layer.cornerRadius = menuButtonFrame.height/2

menuButton.setImage(UIImage(named: "klein_fototoestel_2"), for: UIControlState.normal) // 450 x 450px
menuButton.contentMode = .scaleAspectFit
menuButton.addTarget(self, action: #selector(menuButtonAction), for: UIControlEvents.touchUpInside)

self.view.addSubview(menuButton)


self.view.layoutIfNeeded()
}

func menuButtonAction(sender: UIButton) {
self.selectedIndex = 2
}

我尝试通过使用以下代码委托(delegate)选项卡栏 Controller 来执行我想要的行为但是当选择中央按钮时永远不会调用此函数(尽管显示了正确的 View ......! ):

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

print("the selected index is : \(tabBar.items?.index(of: item))")
}

我真正想知道的是实现我想要的行为的正确方法是什么。请记住,所有 View 之前都有一个 navigationController。我读到很多人建议使用 UserDefaults 来存储前一个 Controller 的索引,但说实话,我真的认为这不合适。

感谢任何帮助。

提前致谢。

最佳答案

我认为您的方向是正确的 - 只需要获得正确的连接即可。

在此图中(它有点大 - 如果在新选项卡中打开它更容易阅读),您会看到一个“标准”UITabBar 结构。关键是将默认的“不执行任何操作” View Controller 作为第三个选项卡,然后添加将通过代码加载的“特殊” View Controller :

enter image description here

然后,您的“操作”函数将如下所示:

func menuButtonAction(sender: UIButton) {

// Don't navigate to the tab index
//self.selectedIndex = 2

// instead, load and present the view you really want to see

if let vc = storyboard?.instantiateViewController(withIdentifier: "SpecialVC") as? SpecialViewController {

vc.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext

self.present(vc, animated: true, completion: nil)

}
}

您可以在此处查看并下载工作示例:https://github.com/DonMag/SWTabsWithSpecialTab

关于ios - 用于查看的选项卡栏,关闭时返回到上一个选定的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43305999/

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