UIActionSheet внесение нескольких изменений UIButton - PullRequest
0 голосов
/ 27 марта 2011

У меня есть 6 кнопок на виде.Я пытаюсь вызвать UIActionSheet для каждой кнопки и изменить изображение кнопок и UIlabel.Я могу заставить первого работать по желанию.Кажется, я не могу заставить второго внести изменения, как первое.Вот мой кодпожалуйста, помогите.

-(IBAction)lifeStatus:(id)sender {

    UIActionSheet *lifeStatus = [[UIActionSheet alloc] initWithTitle:@"Please Select" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"UNSECURED" otherButtonTitles:@"SECURED", @"PENDING", nil];


    lifeStatus.actionSheetStyle = UIActionSheetStyleBlackOpaque;
    [lifeStatus showInView:self.view.window];
    [lifeStatus release];

}
-(void)actionSheet:(UIActionSheet *)lifeStatus clickedButtonAtIndex:(NSInteger) buttonIndex {
    if (buttonIndex == 0) {
        self.lifeLabel.text = @"UNSECURED";
        [self.lifeButton setImage:[UIImage imageNamed:@"RedButton.png"] forState:UIButtonTypeCustom];
        self.lifeLabel.textColor = [UIColor whiteColor];
    } else if (buttonIndex == 1) {
        self.lifeLabel.text = @"SECURED";
        [self.lifeButton setImage:[UIImage imageNamed:@"GreenButton.png"] forState:UIButtonTypeCustom];
        self.lifeLabel.textColor = [UIColor whiteColor];
    } else if (buttonIndex == 2) {
        self.lifeLabel.text = @"PENDING";
        [self.lifeButton setImage:[UIImage imageNamed:@"YellowButton.png"] forState:UIButtonTypeCustom];
        self.lifeLabel.textColor = [UIColor blackColor];
    }
}

-(IBAction)sceneStatus:(id)sender {

    UIActionSheet *sceneStatus = [[UIActionSheet alloc] initWithTitle:@"Please Select" delegate:nil cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"UNSECURED" otherButtonTitles:@"SECURED", @"PENDING", nil];

    sceneStatus.actionSheetStyle = UIActionSheetStyleBlackOpaque;
    [sceneStatus showInView:self.view.window];
    [sceneStatus release];

}

-(void)actionSheet1:(UIActionSheet *)sceneStatus clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0) {
        self.sceneLabel.text = @"UNSECURED";
        [self.sceneButton setImage:[UIImage imageNamed:@"RedButton.png"] forState:UIButtonTypeCustom];
        self.sceneLabel.textColor = [UIColor whiteColor];
    } else if (buttonIndex == 1) {
        self.sceneLabel.text = @"SECURED";
        [self.sceneButton setImage:[UIImage imageNamed:@"GreenButton.png"] forState:UIButtonTypeCustom];
        self.sceneLabel.textColor = [UIColor whiteColor];
    } else if (buttonIndex == 2) {
        self.sceneLabel.text = @"PENDING";
        [self.sceneButton setImage:[UIImage imageNamed:@"YellowButton.png"] forState:UIButtonTypeCustom];
        self.sceneLabel.textColor = [UIColor blackColor];
    }
}

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Создать UIActionSheet с кнопками по умолчанию.При каждом нажатии кнопки задайте названия кнопок, которые нужно отображать в actionSheet.

for (int i = 0; i < itemCount; i++) {
    [actionSheet addButtonWithTitle:itemText];
} 
actionSheet.cancelButtonIndex = [actionSheet addButtonWithTitle:@"Cancel"];
0 голосов
/ 27 марта 2011

Учитывая форматирование, ваш код немного трудно читать, но если я вас правильно понимаю, вы можете попробовать следующее.

Сначала создайте свойство selectedButton или поле. Добавьте цель для каждой кнопки:

[button1 addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchDownOutside];
[button2 addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchDownOutside];
... other buttons ...

-(void)buttonTouched:(id)sender {
    self.selectedButton = (UIButton *)sender;

    //Show UIActionSheet here
    ...
}

Затем внутри вашего UIActionSheet clickedButtonAtIndex: метод selectedButton будет указывать на правильную кнопку, поэтому при необходимости ее довольно просто изменить.

...