Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 从警报处理程序返回超级函数_Swift_Uiviewcontroller - Fatal编程技术网

Swift 从警报处理程序返回超级函数

Swift 从警报处理程序返回超级函数,swift,uiviewcontroller,Swift,Uiviewcontroller,在我的shouldPerformSegue中,我检查是否输入了所有球员的名字。如果没有,我会询问用户是否要继续 override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool { // Check filled in players // var shouldPerform = true if (newPlayerCount < player

在我的
shouldPerformSegue
中,我检查是否输入了所有球员的名字。如果没有,我会询问用户是否要继续

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {

    // Check filled in players
    // var shouldPerform = true

    if (newPlayerCount < playerCount && newPlayerCount >= minPlayerCount) {
        let alert = UIAlertController(title: "Lege velden", message: "Je hebt een veld leeg gelaten. Weet je zeker dat je met \(newPlayerCount) spelers wilt spelen?", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "Ja", style: .default, handler: { action in
            //shouldPerform = true
            return true
        }))
        alert.addAction(UIAlertAction(title: "Nee", style: .destructive, handler: { action in
            self.markUnusedFields()
            //shouldPerform = false
            return false
        }))
        self.present(alert, animated: true)
    }
    //return shouldPerform
}
override func shouldPerformSegue(标识符:String,发送方:Any?)->Bool{
//检查已填写的玩家
//var shouldPerform=true
如果(newPlayerCount=minPlayerCount){
let alert=UIAlertController(标题:“Lege velden”,信息:“Je hebt een veld leeg gelten.Weet Je zeker dat Je met\(新玩家计数)spelers wit spelen?”,首选样式:。alert)
addAction(UIAlertAction,标题:“Ja”,样式:。默认值,处理程序:{action in
//shouldPerform=true
返回真值
}))
addAction(UIAlertAction)(标题:“Nee”,样式:。破坏性,处理程序:{action in
self.markUnusedFields()
//shouldPerform=false
返回错误
}))
self.present(警报、动画:true)
}
//返回应执行
}
返回值
不起作用,因为处理程序不需要它。如何从处理程序返回主函数?我也无法创建在处理程序中设置的变量(如注释),因为它会立即返回


提前谢谢

shouldPerformSegue(标识符:sender:)
是弹出警报以供确认的正确位置。相反,您的控件应该连接到弹出确认的操作,然后您的操作可以调用
performSegue(带标识符:sender:)
在您的代码中,函数
shouldPerformSegue
显示警报,然后立即返回。然后在
shouldPerformSegue
完成后执行警报操作

我会尝试在用户按下continue按钮时显示警报,而不是尝试评估是否应该发生segue

@IBAction func touchedContinueButton(_ sender: UIButton) {
    // Check filled in players
    if (newPlayerCount < playerCount && newPlayerCount >= minPlayerCount) {
        let alert = UIAlertController(title: "Lege velden", message: "Je hebt een veld leeg gelaten. Weet je zeker dat je met \(newPlayerCount) spelers wilt spelen?", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "Ja", style: .default, handler: { action in
            // The player chose to continue
            // Send them to the next view using the segue with identifier "mySegue"
            self.performSegue(withIdentifier: "mySegue", sender: self)
        }))
        alert.addAction(UIAlertAction(title: "Nee", style: .destructive, handler: { action in
            self.markUnusedFields()
        }))
        self.present(alert, animated: true)
    }
}
@iAction func触控连续按钮(uu发送方:UIButton){
//检查已填写的玩家
如果(newPlayerCount=minPlayerCount){
let alert=UIAlertController(标题:“Lege velden”,信息:“Je hebt een veld leeg gelten.Weet Je zeker dat Je met\(新玩家计数)spelers wit spelen?”,首选样式:。alert)
addAction(UIAlertAction,标题:“Ja”,样式:。默认值,处理程序:{action in
//玩家选择继续
//使用标识符为“mySegue”的segue将它们发送到下一个视图
self.performsgue(带有标识符:“mySegue”,发送者:self)
}))
addAction(UIAlertAction)(标题:“Nee”,样式:。破坏性,处理程序:{action in
self.markUnusedFields()
}))
self.present(警报、动画:true)
}
}

如果使用这种方法,请不要忘记设置序列的情节提要标识符,使其与
performsgue(with identifier:)

中的字符串与控件中的字符串相匹配。您是指警报上的按钮吗?因此,当我返回true时,我只调用了
performsgue
,而不是
return true/false
。谢谢你,我没有回来,我可以做你提到的表演。(见其他答案)这也起了作用。无论如何谢谢你!