如何设置UIPickerView的默认值

如何设置UIPickerView的默认值,第1张

如何设置UIPickerView的默认值

TL:DR版本:

//Objective-C[self.picker selectRow:2 inComponent:0 animated:YES];//Swiftpicker.selectRow(2, inComponent:0, animated:true)

您没有将选择器设置为选择行(您说您似乎已经完成了,但是无论如何):

- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated

或者您没有使用以下方法从选择器中获取所选项目

- (NSInteger)selectedRowInComponent:(NSInteger)component

这将从您的选择器中将选定的行作为整数获取,并根据需要进行 *** 作。这应该可以解决问题。祝好运。

无论如何阅读参考:https:
//developer.apple.com/documentation/uikit/uipickerview


编辑:

在UIPickerView中手动设置和获取所选行的示例:

.h文件:

#import <UIKit/UIKit.h>@interface ViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource>{    UIPickerView *picker;    NSMutableArray *source;}@property (nonatomic,retain) UIPickerView *picker;@property (nonatomic,retain) NSMutableArray *source;-(void)pressed;@end

.m文件:

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController@synthesize picker;@synthesize source;- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.}- (void)viewDidUnload{    [super viewDidUnload];    // Release any retained subviews of the main view.}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{    return YES;}- (void) viewWillAppear:(BOOL)animated{    [super viewWillAppear:animated];    self.view.backgroundColor = [UIColor yellowColor];    self.source = [[NSMutableArray alloc] initWithObjects:@"EU", @"USA", @"ASIA", nil];    UIButton *pressme = [[UIButton alloc] initWithframe:CGRectMake(20, 20, 280, 80)];    [pressme setTitle:@"Press me!!!" forState:UIControlStateNormal];    pressme.backgroundColor = [UIColor lightGrayColor];    [pressme addTarget:self action:@selector(pressed) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:pressme];    self.picker = [[UIPickerView alloc] initWithframe:CGRectMake(20, 110, 280, 300)];    self.picker.delegate = self;    self.picker.dataSource = self;    [self.view addSubview:self.picker];    //This is how you manually SET(!!) a selection!    [self.picker selectRow:2 inComponent:0 animated:YES];}//logs the current selection of the picker manually-(void)pressed{    //This is how you manually GET(!!) a selection    int row = [self.picker selectedRowInComponent:0];    NSLog(@"%@", [source objectAtIndex:row]);}- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{    return 1;}- (NSInteger)pickerView:(UIPickerView *)pickerViewnumberOfRowsInComponent:(NSInteger)component{    return [source count];}- (NSString *)pickerView:(UIPickerView *)pickerView  titleForRow:(NSInteger)row forComponent:(NSInteger)component{    return [source objectAtIndex:row];}#pragma mark -#pragma mark PickerView Delegate-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row      inComponent:(NSInteger)component{//    NSLog(@"%@", [source objectAtIndex:row]);}@end

编辑Swift解决方案(来源:Dan Beaulieu的答案)

定义插座:

@IBOutlet weak var pickerView: UIPickerView!  // for example

然后,例如,在您的 viewWillAppearviewDidLoad中 ,可以使用以下代码:

pickerView.selectRow(rowMin, inComponent: 0, animated: true)pickerView.selectRow(rowSec, inComponent: 1, animated: true)

如果检查Swift 2.0框架,则会看到.selectRow定义为:

func selectRow(row: Int, inComponent component: Int, animated: Bool)

单击 Xpre中的.selectRow 选项 ,将显示以下内容:



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5620085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存