• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - UIAlert 中的 unwind segue 不起作用

[复制链接]
菜鸟教程小白 发表于 2022-12-11 16:38:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

如果用户需要登录才能访问某个功能,我会尝试向用户显示警报,但是当我按下警报中的登录按钮时 self.self.performSegueWithIdentifier("tryonToLogin", sender:self ) 似乎没有做任何事情。

LoginViewController

@IBAction func unwindToLogin(segue:UIStoryboardSegue){

}

UIAlert

 @IBAction func goToGallery(sender: UIButton){
    if(isLoggedIn){
        performSegueWithIdentifier("ShowGallery", sender: sender)
    }else{
        showMessage("You must login to view access this feature", sender:sender)
    }
}

func showMessage(popUpMessageText : String, sender:UIButton){
    let messageTitle = "Error"

    print("prepreform segue")
    performSegueWithIdentifier("unwindToLogin", sender:sender)

    let refreshAlert = UIAlertController(title: messageTitle, message: popUpMessageText, preferredStyle: UIAlertControllerStyle.Alert)

    refreshAlert.addAction( UIAlertAction(title: "Login", style: .Default, handler: { (action: UIAlertAction!) in
        print("Handle Login redirect logic here")
        self.performSegueWithIdentifier("unwindToLogin", sender: self)
        print("after Handle Login redirect logic here")
    }))

    refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: { (action: UIAlertAction!) in
        print("Handle Cancel logic here")
    }))


    presentViewController(refreshAlert, animated: true, completion: nil)

}

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    print("prepare for segue called")
    self.camera = nil
}

没有错误。它被调用,好像 ii 放入一个不存在的 id 我得到 no segue with specified identifier found 错误消息。 UIAlert 是否影响 performSegueWithIdentifier()

的调用

下面的帖子使用了这种方法,所以我认为它应该可以工作。我错过了什么。

**IB 截图**

screenshot 1

enter image description here

编辑

我尝试移动 self.performSegueWithIdentifier("unwindToLogin", sender:self) 以查看确实出现了,但它仍然无法正常工作。



Best Answer-推荐答案


block 内的 self 是 UIAlertController,而不是 UIViewController。创建对 UIViewController 的弱引用,并调用该对象的方法。

weak var weakSelf = self

let refreshAlert = UIAlertController(title: messageTitle, message: popUpMessageText, preferredStyle: UIAlertControllerStyle.Alert)

refreshAlert.addAction( UIAlertAction(title: "Login", style: .Default, handler: { (action: UIAlertAction!) in
    print("Handle Login redirect logic here")
    dispatch_async(dispatch_get_main_queue()) {
        weakSelf?.performSegueWithIdentifier("unwindToLogin", sender:self)
    }
}))

关于ios - UIAlert 中的 unwind segue 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37571817/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap