Подтвердить что ты не робот

UIActionSheet в быстрых клавишах Отмена кнопки вверх в iOS 7

Я занимаюсь переписыванием своего приложения с объективного c на Swift, и я заметил, что UIActionSheet ведет себя по-разному в версии Swift, чем в версии obj-c.

Версия Obj-c

enter image description here

Быстрая версия

enter image description here

Это проблема только для iOS 7, она отлично работает (это означает, что отмена находится внизу) на iOS 8 для версий Swift и Obj-c

Вот соответствующий фрагмент кода:

var sheet = UIActionSheet(title: nil, delegate: self, cancelButtonTitle: "Cancel", destructiveButtonTitle: nil)
sheet.addButtonWithTitle("Camera")
sheet.addButtonWithTitle("Photo Library")
sheet.showInView(self.controller.view)

Есть идея, как это исправить?

4b9b3361

Ответ 1

Оказывается, это был еще один случай поиска ответа сразу после вопроса.

Все, что мне нужно было сделать, это добавить кнопку Отмена в качестве другой кнопки, а затем указать ее индекс:

var sheet = UIActionSheet(title: nil, delegate: self, cancelButtonTitle: nil, destructiveButtonTitle: nil)
sheet.addButtonWithTitle("Camera")
sheet.addButtonWithTitle("Photo Library")
sheet.addButtonWithTitle("Cancel")
sheet.cancelButtonIndex = 2
sheet.showInView(self.controller.view)

Не уверен, изменили ли они, как должен работать UIActionSheet в Swift, или если это ошибка, которую никто не исправляет, поскольку она устарела в iOS 8 в любом случае

Ответ 2

Вот что у меня есть на viewDidLoad() или на действие кнопки поместите код следующим образом:

let actionSheet = UIActionSheet(title: nil, delegate: self, cancelButtonTitle: "Cancel", destructiveButtonTitle: "Done", otherButtonTitles: "Yes", "No")
          actionSheet.showInView(self.view)

затем добавьте еще одну функцию для своих действий, например:

func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int)
    {
        switch buttonIndex{

        case 0:
            NSLog("Done");
            break;
        case 1:
            NSLog("Cancel");
            break;
        case 2:
            NSLog("Yes");
            break;
        case 3:
            NSLog("No");
            break;
        default:
            NSLog("Default");
            break;
            //Some code here..

        }

    }