Swift开关和机箱功能处理
我在学习swift的同时正在从事一个开源项目,同时,github存储库可以在上找到。我正在尝试向案例中添加一个标识符,该标识符将在UIActionSheet中每次按下按钮时运行函数。行动表的代码如下所示:Swift开关和机箱功能处理,swift,Swift,我在学习swift的同时正在从事一个开源项目,同时,github存储库可以在上找到。我正在尝试向案例中添加一个标识符,该标识符将在UIActionSheet中每次按下按钮时运行函数。行动表的代码如下所示: @IBAction func rightButton(sender : AnyObject) { var sheet: UIActionSheet = UIActionSheet() let title: String = "Please choose a block rota
@IBAction func rightButton(sender : AnyObject) {
var sheet: UIActionSheet = UIActionSheet()
let title: String = "Please choose a block rotation"
sheet.title = title
sheet.delegate = self
sheet.addButtonWithTitle("Cancel")
sheet.addButtonWithTitle("Day Four")
sheet.addButtonWithTitle("Day Three")
sheet.addButtonWithTitle("Day Two")
sheet.addButtonWithTitle("Day One")
sheet.cancelButtonIndex = 0
sheet.showInView(self.view)
}
我启动了开关来延迟哪个按钮是哪个:
func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
switch buttonIndex {
case 0:
print("Go Back")
case 1:
print("Day Four")
// Day Four Function
case 2:
print("Day Three")
// Day Three Function
case 3:
print("Day Two")
// Day Two Function
case 4:
print("Day One")
// Day One Function
default:
print("Something's broken")
}
}
我希望每个案例都能被推到它自己的
func
方法中,我不确定我会如何处理这个问题,所以如果有人能帮忙,那就太好了。如果这个问题很难理解,请告诉我;所以我可以更好地在Stackoverflow上寻求帮助!提前谢谢。我还不熟悉Swift,但通常的设置不是开关/机箱。相反,每个按钮都与一个动作相关联。那可能是回拨。这里,UIControl.sendAction和相关代码看起来像是开始的地方。您可以创建一个单独的func,并传入buttonIndex。在那里,你可以选择if’s,也可以选择相同的开关
func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
switch buttonIndex {
case 0:
print("Go Back")
theFuction(buttonIndex)
case 1:
print("Day Four")
// Day Four Function
theFuction(buttonIndex)
case 2:
print("Day Three")
// Day Three Function
theFuction(buttonIndex)
case 3:
print("Day Two")
// Day Two Function
theFuction(buttonIndex)
case 4:
print("Day One")
// Day One Function
theFuction(buttonIndex)
default:
print("Something's broken")
}
}
func theFuction (btnIndex: Int) {
if btnIndex == 0 {
} else if btnIndex == 1 {
} else if btnIndex == 2 {
} else if btnIndex == 3 {
} else if btnIndex == 4 {
}
}
如果您的目标是iOS 8,那么就不应该使用UIActionSheets,因为它们已被弃用。将UIAlertController与首选样式UIAlertControllerStyleActionSheet一起使用,并使用addAction()方法向其中添加操作。您猜得很好,但不正确。您可以通过查看文档轻松找到:@AnthonyKong您的链接指向一个不推荐使用的API。在OP的问题中,他使用的是
UIActionSheet
@AnthonyKong,坦白说,是误用。严肃地说:UI代码不应该充满组件发出信号的开关语句。我甚至不需要知道最好的方法,完全同意。但是您可以看到UIActionSheet的API设计要求用户这样做。也许这就是为什么它在iOS8中被弃用的原因。你的意思是,代替那些print…
调用,你想使用一个函数吗?使用if/else的另一个方法调用你想要的方法,比在交换机的情况下只调用它有什么好处?这对我来说似乎是重复的/冗余的。java和C++ UI代码不适合这个模式。我意识到面向对象是对iOS/Mac操作系统的改进,但很难相信这被认为是最佳设计。Big Nerd Ranch的iOS程序设计的开始展示了在XCode UI设计器中建立连接,然后每个UI控件实现一个响应。这听起来更合理。