Можно ли как-то добавить миниатюру icn в лист действий?
Я хочу создать лист действий с двумя кнопками, но я хочу, чтобы у кнопок были значки в виде миниатюр, это возможно? какие-либо другие решения? может быть, есть способ настроить кнопки листа действий.. как создать их отдельно?
это мой текущий метод лист действий:
- (void)tapResponder {
NSLog(@"Tap!");
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"this is a title"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"one", @"two", nil];
[actionSheet showInView:self.view];
}
но мне действительно нравится оставаться с ios design, поэтому, пожалуйста, дайте мне крутое решение:))
thankssss!
2 ответа
Очень возможно, очень легко реализовать:
Это работает и с новым UIAlertController:
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerSytleActionSheet];
//Add your Actions
...
UIAlertAction *snapshot = [UIAlertAction actionWithTitle:@"Snapshot" style:UIAlertActionSytleDefault handler:^(UIAlertAction *action) {
}
//create a UIImage to display since it's technically a tableView:
UIImage *snapshotImage = [UIImage imageNamed:@"snapshot.png"];
//add it to the UIAlertAction of your choosing
[snapshot setValue:snapshotImage forKey:@"image"];
...
[alertC addAction:snapshot];
[self presentViewController:alertC animated:YES completion:nil];
До iOS 8 это можно сделать так:
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"this is a title"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"one", @"two", nil];
[[[action valueForKey:@"_buttons"] objectAtIndex:0] setImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal];
[[[action valueForKey:@"_buttons"] objectAtIndex:0] setImage:[UIImage imageNamed:@"yourImage_Highlighted.png"] forState:UIControlStateHighlighted];
[actionSheet showInView:self.view];
Пара замечаний по этому поводу: убедитесь, что вы правильно выбрали размер изображения, какими бы ни были размеры H x W, насколько огромной станет строка, как только она будет вставлена в лист действий. Так что используйте что-то вроде 30х30. Кроме того, любой цвет вашего изображения будет по умолчанию с синим оттенком. Кроме того, это не считается общедоступным API, приложения одобряются таким образом, но вы рискуете
Может быть, это поможет:
for (UIView *subview in actionSheet.subviews) {
if( [subview isKindOfClass: [UIButton class]] ){
UIButton* btn = (UIButton*) subview;
[btn setImage:[UIImage imageNamed: @"imageName"] forState:UIControlStateNormal];
}
}