gpt4 book ai didi

ios - SWIFT:如何使用不同类的performSegueWithIdentifier

转载 作者:行者123 更新时间:2023-11-30 13:20:41 25 4
gpt4 key购买 nike

我正在尝试让我的应用程序在 2 分钟不活动后自动返回主菜单。到目前为止,我的两个部分都可以工作,但不能一起工作..

如果没有触摸输入,应用程序将启动计数器:

查看用户4806509对Detecting when an app is active or inactive through touches in Swift的回答

从我的主视图 Controller 中,我可以使用代码控制我需要的segue:

func goToMenu()
{
performSegueWithIdentifier("backToMenu", sender: self)
}

我已经实现了 Rob 在 How to call performSegueWithIdentifier from xib? 上的回答中的代码

所以我创建了以下类和协议(protocol):

protocol CustomViewDelegate: class {
func goToMenu()
}
class CustomView: UIView
{
weak var delegate: CustomViewDelegate?
func go() {
delegate?.goToMenu()
}
}

当定时器超时时,函数 go() 被(成功)调用。但是 delegate?.goToMenu() 不起作用。如果我将其更改为: delegate!.goToMenu(),则应用程序崩溃并显示:

fatal error: unexpectedly found nil while unwrapping an Optional value

我的主视图 Controller 是一个 CustomViewDelegate,viewDidLoad 包含:

let myCustomView = NSBundle.mainBundle().loadNibNamed("customView", owner: self, options: nil)[0] as! CustomView
myCustomView.delegate = self

我有正确的 xib 文件,并且该部分正在工作。

我似乎无法找到这个看似简单的问题的解决方案,有人可以解决吗?或者更好的是,有一个更优雅的解决方案来解决我的问题?

谢谢!

编辑:解决方案:

我删除了所有旧代码并实现了 NSNotification 方法:

在 UIApplication 中:

let CallForUnwindSegue = "nl.timfi.unwind"

func delayedAction()
{
NSNotificationCenter.defaultCenter().postNotificationName(CallForUnwindSegue, object: nil)
}

在主视图 Controller 中:

let CallForUnwindSegue = "nl.timfi.unwind"
func goToMenu(notification: NSNotification)
{
performSegueWithIdentifier("backToMenu", sender: self)
}
deinit
{
NSNotificationCenter.defaultCenter().removeObserver(self)
}

在 viewDidLoad 中: NSNotificationCenter.defaultCenter().addObserver(self, 选择器: #selector(PeriodViewController.goToMenu), name:CallForUnwindSegue , object: nil)

最佳答案

我相信你的问题是,因为你的委托(delegate)被声明为弱变量,所以当你等待计时器完成时,你的委托(delegate)被释放,因此对可选的引用丢失(当你强制展开时返回 nil它)。

尝试从 CustomView 类中删除weak关键字。

另一个解决方案是使用通知中心通知您的 View 调用 segue。

与我提议的内容类似here

我希望这会有所帮助。

关于ios - SWIFT:如何使用不同类的performSegueWithIdentifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37780310/

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