Поместите кнопку «Отмена» в UIActionSheet внизу

В UIActionSheet у меня есть кнопка uitableview и отмены. По умолчанию кнопка отмены отображается вверху. Я хочу, чтобы он отображался внизу после просмотра таблицы. Как мне это сделать?


person Arun    schedule 22.04.2013    source источник


Ответы (3)


это работа для меня:

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"SomeTitle" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil, nil];
[actionSheet addButtonWithTitle:@"Some Action"];        
[actionSheet addButtonWithTitle:@"Cancel"];
actionSheet.cancelButtonIndex = actionSheet.numberOfButtons -1;
person Alexander Merchi    schedule 29.06.2014
comment
Вы правы. Если вы используете addButtonWithTitle: вместо того, чтобы заботиться обо всем этом с помощью инициализатора, вам нужно будет указать индекс кнопки отмены. - person Kyle Clegg; 21.08.2014

Я попробовал это, и кнопка «Отмена» находится внизу:

menu = [[UIActionSheet alloc] initWithTitle:@"Actionsheet"
                                                  delegate:self
                                         cancelButtonTitle:@"Cancel"
                                    destructiveButtonTitle:@"destructive"
                                         otherButtonTitles:@"other1", nil];
menu.actionSheetStyle = UIActionSheetStyleDefault;
[menu addButtonWithTitle:@"Cancel"];

По умолчанию кнопка «Отмена» скрыта, добавление кнопки «Отмена» покажет Это.

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

option1) поместите их, чтобы скрыть другие кнопки (чтобы было место для вашего элемента графического интерфейса). Это твик, но может работать в некоторых ситуациях ИЛИ

option2) вам нужно вручную добавить кнопку на лист действий

Встроенные кнопки Actionsheet не могут свободно выравниваться по нижнему краю, потому что цель этих встроенных элементов графического интерфейса отличается.

См. это: Добавление UIPickerView в UIActionSheet (кнопки внизу )

person nzs    schedule 22.04.2013
comment
это работает, потому что у вас есть пара других кнопок над кнопкой отмены. Но в моем случае у меня нет другой кнопки. это просто таблица и кнопка отмены - person Arun; 22.04.2013
comment
Наконец, я понимаю вашу настройку, поэтому я думаю, что единственный вариант для вас — добавить UIButton в свой ActionSheet. - person nzs; 22.04.2013
comment
Что вы можете сделать, чтобы убедиться (для меня это было проблемой), чтобы разместить вашу кнопку uibutton на холсте (кадре) uiactionsheet. Без этого нажатия uibutton не будут отправляться должным образом. Это может произойти, если рамка uiactionsheet не такая большая, как все элементы могут быть правильно размещены на ней. - person nzs; 22.04.2013
comment
Для пользовательского добавления UIBUtton см. мою ссылку SO в этом посте... и если это работает для вас, вы можете принять мой ответ;) - person nzs; 22.04.2013

Пример в Swift:

func presentMyActionSheetIOS7() {
    let actionSheet: UIActionSheet = UIActionSheet(title: "What do you want to do?", delegate: self, cancelButtonTitle: nil, destructiveButtonTitle: nil)

    actionSheet.addButtonWithTitle("Change Transparency")
    actionSheet.addButtonWithTitle("Hide Photo")
    actionSheet.addButtonWithTitle("Cancel")
    actionSheet.cancelButtonIndex = actionSheet.numberOfButtons - 1

    actionSheet.showInView(self.view)
}

func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
    switch buttonIndex {
        case 0:
            println("Change Transparency")
        case 1:
            println("Hide Photo")
        case 2:
            println("Cancel")
        default:
            println("Default")
    }
}
person King-Wizard    schedule 12.03.2015