Как получить выбранную в данный момент строку в окне uipicker при нажатии кнопки «Готово» (с несколькими средствами выбора) - PullRequest
2 голосов
/ 31 января 2012

У меня в приложении UIPickerview работает нормально.

Я хочу изменить стандартное поведение выбора UIPickerview, я имею в виду, у меня есть кнопка "Готово" в UIToolbar. Панель инструментов добавлена ​​в UIPickerview.

Всякий раз, когда пользователь нажимает кнопку «Готово», я хочу считать выделенную запись выбранной. Это означает, что пользователь может перемещаться вверх и вниз, когда пользователь нажимает кнопку «Готово», я хочу рассмотреть выбор сейчас

Пожалуйста, дайте мне знать, как я могу выбрать текущую выбранную строку для UIPickerview при нажатии кнопки «Готово»

Примечание. У меня 3 вида выбора (я имею в виду, что я хочу иметь выбранную строку для тега выбора и просмотра)

Ответы [ 4 ]

2 голосов
/ 28 августа 2012

selectedRowInComponent:

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

Параметры component Номер с нулевым индексом, идентифицирующий компонент представления выбора. Возвращаемое значение Номер с нулевым индексом, идентифицирующий выбранную строку, или -1, если строка не выбрана.

Для справки

И сделатьРазница между различными pickerViews добавить тег для каждого из сборщиков:

 self.pikcerView.tag = 1;

Надеюсь, это поможет.

2 голосов
/ 31 января 2012

// Предположим, что вы создали три представления выбора как 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 голосов
/ 31 января 2012
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    NSString *str = [yourarray objectAtIndex:row];   
}

Теперь str имеет выбранное значение.так что вы можете использовать его, когда закончите нажатие кнопки.

0 голосов
/ 31 января 2012

Следующий пример для контроллера 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

счастливое кодирование @ Сэмюэл

...