防止segue执行两次

时间:2017-01-29 20:02:21

标签: objective-c macos

我在OSX,Xcode 8.2,而不是iOS。

我在按钮点击时打开一个带有故事板segue(popover)的视图,而不是以编程方式打开。

虽然弹出窗口弹出"弹出"如果快速点击触发按钮,则会多次调用segue,在相同位置打开多个弹出窗口。

如果已打开弹出框,我想阻止弹出窗口被打开两次。最好的方法是什么?

我目前的方法是在prepareForSegue的BOOL中保存激活/打开,并在shouldPerformSegue中检查其值。然后,变量由视图本身重置(在通过委托关闭时)

但它并不干净,所以我想知道是否有更有效的方法来执行这项任务。

2 个答案:

答案 0 :(得分:0)

删除performSegueWithIdentifier 并在prepareForSegue中使用这样的东西;

let indexPath : NSIndexPath! = self.tableView.indexPathForSelectedRow

我不知道如何在目标中写这个但是在swift我确定如果你使用tableview如果只有按钮来显示视图就会选择索引 这很容易 只需进入故事板并在

之后为每个标识符指定不同的名称

使用标识符

确定Switch语句
switch control expression {

case identifier 1:
    statements

case identifier 2:
    statements

case identifier 3:
    statements

}
or 

if identifier == "btn1"{
destinationForSegue : ControllerName1

}

if identifier == "btn2"{
destinationForSegue : ControllerName2

}

if identifier == "btn3"{
destinationForSegue : ControllerName3

}

答案 1 :(得分:0)

试试这个

if(bad action1){

消息这个没有上帝再试一次

}

否则{

做你的员工1     如果行动不好2 {

消息这个没有上帝再试一次

}
else{
do your staff 2
     if bad action3{
     message this no god try again    

     }
     else{
     do your staff 3 or final staff

     }

}

}