UIViewController 中的 iPhone UIPickerView

Posted

技术标签:

【中文标题】UIViewController 中的 iPhone UIPickerView【英文标题】:iPhone UIPickerView in UIViewController 【发布时间】:2010-02-12 06:33:22 【问题描述】:

我有一个 xib,我在其中添加了一个名为 delta 的 UIViewController。 delta 下的视图由 delta viewcontroller 控制,而不是文件所有者。在增量视图中,我有一个UIViewPicker。我的问题是我在deltaviewcontroller 中的UIPickerView 中进行编程,并且我将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

实施

#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

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

【问题讨论】:

这段代码看起来没问题,只是你泄露了“item”字符串。您遇到的实际崩溃/异常是什么?你能描述并展示加载/显示增量视图控制器的代码吗? 从“运行”菜单打开控制台,告诉我们您遇到的错误 【参考方案1】:

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

UIPickerView class reference and sample code

【讨论】:

【参考方案2】:

尝试做 [self.view addSubview:pickerView]; 在你的 viewDidLoad 方法中。

【讨论】:

以上是关于UIViewController 中的 iPhone UIPickerView的主要内容,如果未能解决你的问题,请参考以下文章

iPhone SDK如何将tableview中plist中的选定行传递到UIViewController

iPhone:在多线程环境中发布 UIViewController 时出现问题

iPhone UIViewController 滞后

在部分uiviewcontroller,monotouch iphone中添加标签栏

iPhone 5 中的 viewDidAppear 高度为 656

加载特定于设备的 iPad/iPhone UIViewController nib 失败,带有 .mm 文件