Поставете бутона Отказ в 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"];

По подразбиране бутонът Отказ е скрит, добавянето на Отказ ще покаже то.

НО: ако имате допълнителни GUI елементи във вашия лист с действия, трябва да го направите

option1) позиционирайте тези, за да скриете други бутони (за да имате място за вашия GUI елемент). Това е ощипване, но може да работи в някои ситуации ИЛИ

опция 2) трябва ръчно да добавите своя бутон към листа с действия

Вградените бутони на Actionsheet не могат да се подравняват свободно към дъното, защото целта е различна за тези вградени GUI елементи.

Вижте това: Добавяне на 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