【发布时间】:2014-05-21 19:54:07
【问题描述】:
我们有一个包含许多选项的 UIActionSheet。在 iPad 上的 iOS 7 中,滚动列表时,它会显示原始值。这是 iPad 7 的错误还是我们可以做出改变? iOS 6 iPad 和 iPhone 在我们看来还不错。
//
// ViewController.m
// AlertViewTest
//
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_data = [NSMutableArray new];
[_data addObject:@"Arthur"];
[_data addObject:@"Bertha"];
[_data addObject:@"Cristobal"];
[_data addObject:@"Dolly"];
[_data addObject:@"Edouard"];
[_data addObject:@"Fay"];
[_data addObject:@"Gonzalo"];
[_data addObject:@"Hanna"];
[_data addObject:@"Isaias"];
[_data addObject:@"Josephine"];
[_data addObject:@"Kyle"];
[_data addObject:@"Laura"];
[_data addObject:@"Marco"];
[_data addObject:@"Nana"];
[_data addObject:@"Omar"];
[_data addObject:@"Paulette"];
[_data addObject:@"Rene"];
[_data addObject:@"Sally"];
[_data addObject:@"Teddy"];
[_data addObject:@"Vicky"];
[_data addObject:@"Wilfred"];
[_data addObject:@"Ana"];
[_data addObject:@"Bill"];
[_data addObject:@"Claudette"];
[_data addObject:@"Danny"];
[_data addObject:@"Erika"];
[_data addObject:@"Fred"];
[_data addObject:@"Grace"];
[_data addObject:@"Henri"];
[_data addObject:@"Ida"];
[_data addObject:@"Joaquin"];
[_data addObject:@"Kate"];
[_data addObject:@"Larry"];
[_data addObject:@"Mindy"];
[_data addObject:@"Nicholas"];
[_data addObject:@"Odette"];
[_data addObject:@"Peter"];
[_data addObject:@"Rose"];
[_data addObject:@"Sam"];
[_data addObject:@"Teresa"];
[_data addObject:@"Victor"];
[_data addObject:@"Wanda"];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)showAlert:(id)sender {
if([self.actionSheet isVisible]) {
[self.actionSheet dismissWithClickedButtonIndex:[self.actionSheet cancelButtonIndex] animated:YES];
self.actionSheet.delegate = nil;
self.actionSheet = nil;
return;
}
if(nil == self.actionSheet) {
self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"Select one"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
if(![self shouldPresentActionSheet:self.actionSheet]) {
self.actionSheet = nil;
return;
}
[self.actionSheet setCancelButtonIndex:[self.actionSheet addButtonWithTitle:NSLocalizedString(@"Cancel", @"Cancel")]];
}
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[self.actionSheet showFromBarButtonItem:self.button animated:YES];
} else {
[self.actionSheet showFromToolbar:self.toolbar];
}
}
-(BOOL)shouldPresentActionSheet:(UIActionSheet *)actionSheet
{
if(actionSheet == self.actionSheet) {
if([self.data count] == 0) {
return NO;
}
for(NSString *d in self.data) {
[self.actionSheet addButtonWithTitle:d];
}
}
return YES;
}
@end
【问题讨论】:
-
考虑使用另一个界面(弹出框中的表格视图)。操作表从来都不是这样敲的,实际上您只是将其用作懒人的表格视图。
-
我会说你在滥用 UIActionSheet。它适用于用户可以选择的不超过 10 个操作项。当然,这不是一个硬性数字,但在操作表中显示整个列表并不是一个好主意。我会创建一个单独的视图控制器,其中包含一个表格视图(本质上就是一个操作表),让用户进行选择。
-
发帖后,我差点编辑评论,以保护我的信誉。通常这将是 2-4 个项目,但我们有一个客户以一种奇怪的方式使用它。我发布的只是示例代码,以展示我认为是错误的内容。
-
查看link 了解解决方法
-
我可能是错的,但这似乎在 iOS 8 中已修复
标签: ios ipad ios7 uiactionsheet