在iPad中将UIPickerView添加到UIActionSheet中

5
我有一个UIPickerView,并需要将其显示在iPad的UIActionSheet中(在iPhone中非常简单,但在iPad中不行)。
我在视图上有一个按钮,当我点击它时,执行以下代码:
- (IBAction) buttonPressed:(id)sender
{
    NSLog(@"I am pressed");

    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(100,200,500,500)];
    picker.delegate = self;
    picker.dataSource = self;
    picker.showsSelectionIndicator = YES;
    [self.view addSubview:picker];    
}

// PickerView的委托和数据源函数:

// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    return 1;
}

// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    return 5;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return @"One";
}

但是当将上面的代码更改为在ActionSheet中添加PickerView时,它只显示ActionSheet的标题,而没有PickerView!

修改后的代码如下:

- (IBAction) buttonPressed:(id)sender
{
    NSLog(@"I am pressed");

    UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:@"My PickerView"
                                              delegate:nil
                                     cancelButtonTitle:nil
                                destructiveButtonTitle:nil
                                     otherButtonTitles:nil];

    UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(100,200,500,500)];
    picker.delegate = self;
    picker.dataSource = self;
    picker.showsSelectionIndicator = YES;

    [actionSheet addSubview:picker];
    [actionSheet showFromRect:CGRectMake(0, 0, 320, 469) inView:self.view animated:NO];

}
3个回答

4

我卡住了,我打算使用一个包含UITableViewControllerUIPopoverController!不管怎样还是谢谢!


1
尝试修改选择器的框架。 (100, 200) 在 (x, y) 上可能不是一个好的位置。

当我将pickerView的initLine更改为UIPickerView* picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0,0,320,469)];时,我现在可以看到ActionSheet内的PickerView的非常小的一部分,但是ActionSheet显示为一个非常小的正方形,我该如何使它变大?我尝试更改其宽度和高度,但似乎不起作用! - Muhammad Hewedy
尝试将cancelButtonTitle设置为某个NSString,以查看大小是否更改。 - Stefan Ticu
我失败了,我打算使用一个包含UITableViewController的UIPopoverController!无论如何还是谢谢! - Muhammad Hewedy

-4
我认为这行代码:([actionSheet addSubview:picker];) 应该改成 [actionSheet addSubview:picker.view];
我之前使用 UIWindow 也遇到了同样的问题。

UIPickerView 继承自 UIView,它本身没有 view 属性。 - Olie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接