UIPicker 和 UIActionsheet 不再工作 iOS7

Posted

技术标签:

【中文标题】UIPicker 和 UIActionsheet 不再工作 iOS7【英文标题】:UIPicker and UIActionsheet no longer working iOS7 【发布时间】:2013-10-01 20:14:19 【问题描述】:

嗨,我的 UI 选择器不再适用于 ios7,它会弹出但它是空白的。只发生在 iOS7 上。

//picker
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
animationsLabel.text = [optionsArray objectAtIndex:[picker selectedRowInComponent:0]];

if (pickerView==animationsPicker) 
    animationsLabel.text = [optionsArray objectAtIndex:[animationsPicker selectedRowInComponent:0]];



-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
    return 1;


-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
    return [optionsArray count];


-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
   return [optionsArray objectAtIndex:row];
   NSLog(@"title options array %lu",(unsigned long)optionsArray.count);

以及行动:

-(IBAction)animationActionSheet:(id)sender 

UIActionSheet *selectPopup = [[UIActionSheet alloc] initWithTitle:@"\n\n\n\n\n\n\n\n"
                                                        delegate:nil
                                               cancelButtonTitle:nil
                                          destructiveButtonTitle:nil
                                               otherButtonTitles:nil];

[selectPopup showInView:self.view];

optionsArray = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"6",@"5",@"7",@"8",@"9", nil];

// Create picker
animationsPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(10, 160, 320, 100)];
animationsPicker.showsSelectionIndicator = YES;
[self.view addSubview:animationsPicker];
animationsPicker.delegate = self;
animationsPicker.dataSource = self;
[selectPopup addSubview:animationsPicker];

// Animate picker opening
[UIView beginAnimations:nil context:nil];
[selectPopup setBounds:CGRectMake(0, 0, 320, 485)];
[UIView commitAnimations];

这是我迄今为止尝试过的。以前在操作表中显示选择器从来没有问题,但现在它是空白的。我想知道有没有其他人遇到过这个问题,或者你能看到任何错误吗?我打印了与选择器有关的所有内容。

【问题讨论】:

【参考方案1】:

有人告诉我,将选择器放入操作表是不标准的。我在 iOS 6 中执行此操作从未遇到任何问题,但在 iOS 7 中,我遇到了错误。我切换到 UIView 而不是我的选择器的操作表,它工作正常。我希望这会有所帮助。

【讨论】:

非常感谢。我希望不会是这种情况,但它应该很容易解决。我希望保持不变。再次感谢。 我也希望如此,但将它们放在 UIViews 而不是 ActionSheets 中也不错。祝你好运!【参考方案2】:

根据文档,不建议为操作表添加子视图。

"子类注释 UIActionSheet 不是为子类而设计的,也不应该将视图添加到它的层次结构中。如果您需要呈现比 UIActionSheet API 提供的自定义更多的表单,您可以创建自己的表单并使用 presentViewController:animated:completion: 以模态方式呈现它。"

Apple 正在加强他们对 Action Sheets 的使用......并且他们提高了在 iOS 7 中使用此功能的赌注,这意味着您必须围绕它编写代码。

【讨论】:

【参考方案3】:

看看我做的这个项目。这实际上与在操作表中添加选择器 https://github.com/DiscoverPioneer/PickerSlider

【讨论】:

以上是关于UIPicker 和 UIActionsheet 不再工作 iOS7的主要内容,如果未能解决你的问题,请参考以下文章

操作表中的 UIPickerView 从下半部分没有响应

无法在 iOS8 上的 UIAlertController 中显示 UIPickerView

带有对象和键的 UIPicker 使用 JSON

从 UIPicker 进行选择时尝试显示图像和标签

UIPicker 和文本字段

UIPicker 从 NSUserDefaults 中选择双值