【swift】ひとつのViewControllerでふたつのActionSheetを使う【CoffeeNote開発日記】
ひとつのViewControllerでふたつActionSheetを使う場合は,tagでひもづける必要がある.
actionSheetメソッドが勝手に呼ばれるんだけど,それがそれぞれのUIActionSheetと結びつけることができないみたい.なんだこれ.
自分の場合は,同じViewControllerに写真を登録するときにカメラで撮るかカメラロールから登録するか選ぶためのActionSheetと,あと削除を確認するためのActionSheetのふたつが必要だった.
ということでソースコードは以下の感じになった.
@IBAction func pushCameraButton(sender: AnyObject) { var sheetCamera = UIActionSheet() sheetCamera.title = "Set Photo of Coffee" sheetCamera.delegate = self sheetCamera.addButtonWithTitle("Take Photo by Camera") sheetCamera.addButtonWithTitle("Select Photo from Cameraroll") sheetCamera.addButtonWithTitle("Cancel") sheetCamera.cancelButtonIndex = 2 sheetCamera.tag = 0 sheetCamera.showInView(self.view) } @IBAction func pushedDeleteButton(sender: AnyObject) { var sheet = UIActionSheet() sheet.title = "Deleting This Note" sheet.delegate = self sheet.addButtonWithTitle("OK") sheet.addButtonWithTitle("Cancel") sheet.cancelButtonIndex = 1 sheet.tag = 1 sheet.showInView(self.view) } func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) { switch (actionSheet.tag) { case 0: /* Photo ActionSheet */ if (buttonIndex==0) { // take photo self.takePhoto(self) }else if(buttonIndex==1) { // select photo self.selectPhoto(self) }else { // cancel } break case 1: /* Delete ActionSheet */ if (buttonIndex==0) { self.takePhoto(self) }else if(buttonIndex==1){ self.selectPhoto(self) }else { // Cancel Button } if (buttonIndex==1) { // Cancel Button println("Cancel button tapped.") }else{ // OK Button println("OK button tapped.") /* Delete Note */ self.performSegueWithIdentifier("unwindFromEditByDeleteButton", sender: self) break } default: break } }