点击完成时如何在uipickerview中获取当前选定的行(具有多个选择器)

Posted

技术标签:

【中文标题】点击完成时如何在uipickerview中获取当前选定的行(具有多个选择器)【英文标题】:How to fetch the currently selected row in the uipickerview when tapped Done ( having multiple pickers) 【发布时间】:2012-01-31 05:36:28 【问题描述】:

我的应用程序中的UIPickerview 工作正常。

我想更改UIPickerview 的默认选择行为,我的意思是我在UIToolbar 中有一个完成按钮。工具栏添加到UIPickerview

每当用户点击“完成”按钮时,我想将突出显示的条目视为已选中。 这意味着用户可以上下移动,当用户点击“完成”按钮时,我想现在考虑选择

请告诉我,当点击“完成”按钮时,如何获取 UIPickerview 的当前选定行

注意:我的视图中有 3 个选择器(我的意思是我希望选择器视图标记和选择器视图选择行)

【问题讨论】:

这是一个重复的帖子。在 SO 本身,它已经被问过很多次了..!! @Sarah:如果重复,您应该发布链接。即使您还没有接近投票的特权,其他人也有。他们会看到您的建议,判断它是否重复,然后自己投票。 【参考方案1】:

//假设你已经创建了三个picker视图,分别是firstPickerView、secondPickerView和ThirdPickerView

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

    if(pickerView == firstPickerView)
    
        NSString *strFirstPickerView = [yourarray objectAtIndex:row];
    
    else if(pickerView == secondPickerView)
    
        NSString *strSecondPickerView = [yourarray objectAtIndex:row];
    
    else
    
        NSString *strThirdPickerView = [yourarray objectAtIndex:row];
    

【讨论】:

【参考方案2】:

selectedRowInComponent:

- Returns the index of the selected row in a given component.
- (NSInteger)selectedRowInComponent:(NSInteger)component

参数 组件 标识选择器视图组件的零索引编号。 返回值 标识所选行的零索引数字,如果未选择任何行,则为 -1。

For Help

为了在不同的pickerViews之间做出区别,为每个picker添加标签:

 self.pikcerView.tag = 1;

希望这会有所帮助。

【讨论】:

【参考方案3】:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

    NSString *str = [yourarray objectAtIndex:row];   

现在 str 有一个选定的值。所以你可以在完成按钮按下时使用它。

【讨论】:

【参考方案4】:

UIPickerview 控制器的以下示例

.m 文件在这里

#import "SingleComponentPickerViewController.h"
@implementation SingleComponentPickerViewController
@synthesize singlePicker;
@synthesize pickerData;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) 
        // Custom initialization
    
    return self;


-(IBAction)buttonPressed1

    NSInteger row = [singlePicker selectedRowInComponent:0];
    NSString *selected = [pickerData objectAtIndex:row];
    NSString *title = [[NSString alloc] initWithFormat:
                       @"you selected %@!", selected];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                   message : @"Thank you for choosing."
                                                   delegate:nil
                                         cancelButtonTitle :@"Welcome"             
                                         otherButtonTitles :nil];
    [alert show];
    [alert release];
    [title release];


- (void)viewDidLoad 


    NSArray *array = [[NSArray alloc] initWithObjects:@"iPhone",@"iPad",@"iPod",@"iMac",@"Mac",
                      @"iBook",@"Safari",nil];
    self.pickerData = array;
    [array release];
    [super viewDidLoad];



- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    return (interfaceOrientation == UIInterfaceOrientationPortrait);


- (void)didReceiveMemoryWarning 
    [super didReceiveMemoryWarning];


- (void)viewDidUnload 



- (void)dealloc 
    [singlePicker release];
    [pickerData release];
    [super dealloc];


-(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[pickerData objectAtIndex:row];



@end

这里还有.h文件

#import <UIKit/UIKit.h>

@interface SingleComponentPickerViewController : UIViewController 
    IBOutlet UIPickerView *singlePicker;
    NSArray *pickerData;

@property(nonatomic , retain) UIPickerView *singlePicker;
@property(nonatomic , retain) NSArray *pickerData;

-(IBAction)buttonPressed1;

@end

快乐编码 @塞缪尔

【讨论】:

以上是关于点击完成时如何在uipickerview中获取当前选定的行(具有多个选择器)的主要内容,如果未能解决你的问题,请参考以下文章

获取 UIPickerView 当前选中的值

如何使用完成按钮制作 UIPickerView?

如何在 UIPickerView 被选中后获取当前值

仅在单击完成按钮时将 UIPickerView 选择添加到 TextField

如何在 UIPICKERVIEW (iOS) 中获取所选行的索引号

Swift:点击 UITextField 时如何显示 UIPickerView