Iphone 未显示弹出式UIPickerView

Iphone 未显示弹出式UIPickerView,iphone,ios,xcode,uipickerview,Iphone,Ios,Xcode,Uipickerview,我正在尝试实现一个弹出式UIPickerView,以模拟在Safari中单击下拉字段时的行为,但迄今为止效果有限。我发现: 并试图遵循这一点。到目前为止,我已经显示了我的PopUpPickerView,但是UIPickerView本身没有(我只看到视图背景色显示) PopUpPickerViewController有一个nib文件,因此当单击按钮时,将调用“更改”选择器,并弹出UIPickerView。此时,仅弹出PopUpPickerView的背景色 如果您能提供任何帮助,我们将不胜感激。提

我正在尝试实现一个弹出式UIPickerView,以模拟在Safari中单击下拉字段时的行为,但迄今为止效果有限。我发现:

并试图遵循这一点。到目前为止,我已经显示了我的PopUpPickerView,但是UIPickerView本身没有(我只看到视图背景色显示)

PopUpPickerViewController有一个nib文件,因此当单击按钮时,将调用“更改”选择器,并弹出UIPickerView。此时,仅弹出PopUpPickerView的背景色

如果您能提供任何帮助,我们将不胜感激。提前谢谢

我的代码如下:

PopUpPickerViewController.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "PopUpPickerView.h"

#define UIColorMakeRGBA(nRed, nGreen, nBlue, nAlpha) [UIColor colorWithRed: (nRed)/255.0f green: (nGreen)/255.0f blue:(nBlue)/255.0f alpha:nAlpha]

@class PopUpPickerView;

@interface PopUpPickerViewController : UIViewController{
    NSArray *pickerData;
    PopUpPickerView *pickerView;
    UIPickerView *picker;
}

-(IBAction)change:(id)sender;
-(void)addSubviewToWindow:(UIView*) addView;

@property(nonatomic, retain) PopUpPickerView *pickerView;
@property(nonatomic, retain) NSArray *pickerData;
@property(nonatomic, retain) UIPickerView *picker;

@end
PopUpPickerView.h

#import <UIKit/UIKit.h>
#import "PopUpPickerViewController.h"

@class PopUpPickerViewController;

@interface PopUpPickerView : UIView<UIPickerViewDelegate, UIPickerViewDataSource>{
    UIPickerView *picker;
    PopUpPickerViewController *parentViewController;
    NSArray *pickerData;
}

-(void)animateDatePicker:(BOOL)show;

@property(nonatomic, retain) UIPickerView *picker;
@property(nonatomic, retain) NSArray *pickerData;
@property(nonatomic, retain) PopUpPickerViewController *parentViewController;

@end

我已经多次使用SBTableAlert,它似乎提供了您所需要的内容,但它使用的是UITableView而不是UIPickerView。看一看,希望它对你的项目有帮助


事实证明,答案与UIPickerView所在的坐标有关。UIPickerView被放置在PopUpPickerView的底部,这意味着它是屏幕外的。调整坐标后,一切正常。

非常感谢您的建议,但我正试图让UIPickerView从屏幕底部向上滑动,就像在Safari中触摸下拉字段时发生的那样。这似乎会产生一个模式对话框,其中包含UITableView。
#import <UIKit/UIKit.h>
#import "PopUpPickerViewController.h"

@class PopUpPickerViewController;

@interface PopUpPickerView : UIView<UIPickerViewDelegate, UIPickerViewDataSource>{
    UIPickerView *picker;
    PopUpPickerViewController *parentViewController;
    NSArray *pickerData;
}

-(void)animateDatePicker:(BOOL)show;

@property(nonatomic, retain) UIPickerView *picker;
@property(nonatomic, retain) NSArray *pickerData;
@property(nonatomic, retain) PopUpPickerViewController *parentViewController;

@end
#import "PopUpPickerView.h"
#import "PopUpPickerViewController.h"

@implementation PopUpPickerView

@synthesize  picker, pickerData, parentViewController;

- (void)animateDatePicker:(BOOL)show {

    pickerData = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", nil];

    self.picker.delegate = self;
    self.picker.dataSource = self;

    CGRect screenRect = self.frame;
    CGSize pickerSize = [self.picker sizeThatFits:CGSizeZero];

    CGRect startRect = CGRectMake(0.0,
                              screenRect.origin.y + screenRect.size.height,
                              pickerSize.width, pickerSize.height);

    CGRect pickerRect = CGRectMake(0.0,
                               screenRect.origin.y + screenRect.size.height,
                               pickerSize.width,
                              pickerSize.height);

    self.picker.frame = pickerRect;
    self.backgroundColor = UIColorMakeRGBA( 255, 125, 64, 0.7f - (int)show * 0.7f );

    if ( show ) {
        self.picker.frame = startRect;
        PopUpPickerViewController *controller = (PopUpPickerViewController*) self.parentViewController;
        [controller addSubviewToWindow:self];
    }

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3f];
    [UIView setAnimationDelegate:self];

    self.backgroundColor = UIColorMakeRGBA( 255, 125, 64, 0.0f + (int)show * 0.7f );

    if ( show ) {
        self.picker.frame = pickerRect;

    } else {
        [UIView setAnimationDidStopSelector:@selector(slideDownDidStop)];
        self.picker.frame = startRect;
    }

    [UIView commitAnimations];  
}

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

-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
     return [pickerData count];
}

-(NSString*) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    return [self.pickerData objectAtIndex:row];
}


 @end