UIViewController中的iPhone UIPickerView

UIViewController中的iPhone UIPickerView,iphone,uiview,sdk,uiviewcontroller,uipickerview,Iphone,Uiview,Sdk,Uiviewcontroller,Uipickerview,我有一个xib,其中添加了一个名为delta的UIViewController。delta下的视图由delta viewcontroller控制,而不是由文件所有者控制。在增量视图上,我有一个UIViewPicker。我的问题是我正在UIPickerView中的deltaviewcontroller中编程,并且我正在发布deltaviewcontroller作为UIPickerView的代理和数据源。一切都应该正常,但是当我加载deltaviewcontroller的视图时,应用程序崩溃了。如果

我有一个xib,其中添加了一个名为delta的
UIViewController
。delta下的视图由delta viewcontroller控制,而不是由文件所有者控制。在增量视图上,我有一个
UIViewPicker
。我的问题是我正在
UIPickerView
中的
deltaviewcontroller
中编程,并且我正在发布
deltaviewcontroller
作为
UIPickerView
的代理和数据源。一切都应该正常,但是当我加载deltaviewcontroller的视图时,应用程序崩溃了。如果我在文件的所有者视图下以相同的方式执行所有操作,那么效果很好。我想知道是否真的有办法让UIPickerView与
UIViewController
一起工作,而不一定是文件的所有者

参考代码如下:

标题

@interface DeltaViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
    NSMutableArray *arrayNo;
    IBOutlet UIPickerView *pickerView;
}
@property (nonatomic, retain) UIPickerView *pickerView;
@property (nonatomic, retain) NSMutableArray *arrayNo;

@end
@接口DeltaViewController:UIViewController{
NSMutableArray*arrayNo;
IBUIPickerView*pickerView;
}
@属性(非原子,保留)UIPickerView*pickerView;
@属性(非原子,保留)NSMUTABLEARRY*arrayNo;
@结束
实施

#import "DeltaViewController.h"

@implementation DeltaViewController

@synthesize pickerView;
@synthesize arrayNo;

- (void)viewDidLoad
{
    NSMutableArray *dollarsArray = [[NSMutableArray alloc] init];

    for (int i = 0; i < 100; i++)
    {
        NSString *item = [[NSString alloc] initWithFormat:@"%i", i];
        [dollarsArray addObject:item];
    }

    self.arrayNo = dollarsArray;

    [dollarsArray release]; 
}

#pragma mark -
#pragma mark Picker Data Source Methods

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

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

#pragma mark Picker Delegate Methods

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

- (void)dealloc {
    [arrayNo release];
    [pickerView release];
    [super dealloc];
}

@end
#导入“DeltaViewController.h”
@DeltaViewController的实现
@合成pickerView;
@合成arrayNo;
-(无效)viewDidLoad
{
NSMutableArray*DollarArray=[[NSMutableArray alloc]init];
对于(int i=0;i<100;i++)
{
NSString*项=[[NSString alloc]initWithFormat:@“%i”,i];
[DollarArray addObject:item];
}
self.arrayNo=dollarsArray;
[阵列释放];
}
#布拉格标记-
#pragma标记选择器数据源方法
-(NSInteger)pickerView中组件的编号:(UIPickerView*)pickerView
{
返回1;
}
-(NSInteger)pickerView:(UIPickerView*)pickerView行数组件:(NSInteger)组件
{
返回[arrayNo count];
}
#pragma标记选择器委托方法
-(NSString*)pickerView:(UIPickerView*)pickerView标题箭头:(NSInteger)组件行:(NSInteger)组件
{
返回[arrayNo objectAtIndex:row];
}
-(无效)解除锁定{
[arrayNo释放];
[pickerView发布];
[super dealoc];
}
@结束

如果我做错了什么,请指出。非常感谢你的帮助

如果您搜索如何在UIView中添加UIPickerView,只需查看UIPickerView的Apple示例代码。我认为这是学习正确使用不同课程的最好方法之一。有五个项目包括一个UIPickerView。这是链接

试着去做 [self.view addSubview:pickerView];
在viewDidLoad方法中。

除了泄漏“item”字符串之外,此代码看起来正常。您得到的实际崩溃/异常是什么?您能描述和显示加载/显示delta view控制器的代码吗?从运行菜单打开控制台,告诉我们您遇到的错误