如何从 iOS 中的操作表中获取选择器值?

Posted

技术标签:

【中文标题】如何从 iOS 中的操作表中获取选择器值?【英文标题】:How to get pickervalue from action sheet in iOS? 【发布时间】:2012-08-01 08:00:15 【问题描述】:

在我的应用程序中,当按下按钮时,我将启动 UIActionSheet,其中包含 UIPickerViewUIToolBar。它通过使用以下代码完美地工作。 我正在尝试获取选择器值并将该值设置为被调用的按钮,但我找不到确切的解决方案。

- (IBAction)showPicker:(id)sender 

 actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
                                                         delegate:self
                                                cancelButtonTitle:nil
                                           destructiveButtonTitle:nil
                                                otherButtonTitles:nil];//as we want to display a subview we won't be using the default buttons but rather we're need to create a toolbar to display the buttons on 

[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

CGRect pickerFrame = CGRectMake(0, 40, 0, 0);

pickerView = [[UIPickerView     alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.dataSource = self;
pickerView.delegate = self;

[actionSheet addSubview:pickerView];
//[pickerView release];     

pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
pickerToolbar.barStyle = UIBarStyleBlackOpaque;
[pickerToolbar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];   

UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];  
[barItems addObject:flexSpace];  

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)];  
[barItems addObject:doneBtn];  

UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonPressed:)];  
[barItems addObject:cancelBtn];  


[pickerToolbar setItems:barItems animated:YES];  

[actionSheet addSubview:pickerToolbar];  

[actionSheet addSubview:pickerView];  

[actionSheet showInView:self.view];  

[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];         

当工具栏中的完成按钮被按下时,它将调用此方法

-(void)doneButtonPressed:(id)sender  
//Do something here here with the value selected using [pickerView date] to get that value   
[actionSheet dismissWithClickedButtonIndex:1 animated:YES];   
[pickerView release];
[pickerToolbar release];
[actionSheet release];     
  

这是我的问题

如何从操作表中获取选择器值?

如何为按钮设置该值?

感谢你们的帮助

【问题讨论】:

【参考方案1】:

假设 pickerView 数据源只有一个组件,您可以使用以下方法获取所选行:

NSInteger row = [pickerView selectedRowInComponent:0];

【讨论】:

感谢您的回答..我想在doneButtonPressed方法中使用它吗..以及如何从这个phik中获取选择器值..谢谢 是的,在 doneButtonPressed 中执行此操作。该值在您的数据源中,因此请使用[self pickerView:pickerView titleForRow:row forComponent:0] 感谢您的支持.. 很抱歉延迟接受刚才的答案有一个更改来测试我的代码.. 谢谢 +1【参考方案2】:

只需在您的 .h 或 .m 中创建一个 ivar 并将 [pickerView date] 分配给 ivar,您就可以从 ActionSheet 中获取值。

快乐编码:)

编辑

在您的-(void)doneButtonPressed:(id)sender 方法中只需输入这行代码

selected = [pickerView date];

selected 是在.h 中声明的NSDate 类型ivar,如下所示

@property (strong, nonatomic) NSDate *selected;

还必须为 datePicker 声明一个属性

@property (strong, nonatomic) UIDatePicker *pickerView;

在.m中合成如下

@synthesize pickerView;
@synthesize selected;

快乐编码:)

编辑 1

用于自定义pickerView

(我假设 pickerView 的所有委托和数据源都已定义和声明)

要从自定义选择器中获取选定的值,必须使用下面提到的代码

NSInteger row = [singlePicker selectedRowInComponent:0];
NSString *selected = [pickerData objectAtIndex:row]; 

singlePicker = pickerView 和pickerDataNSArray,用作pickerView 的数据源

希望这能帮助您解决问题。

快乐编码:)

【讨论】:

感谢您的回答。抱歉,我是 ios 新手,无法找到您。[pickerView 日期] 是什么,如果可能的话,您能说一下如何为按钮设置文本 很抱歉,我在这里没有使用任何日期..pickerview 值来自 NSArray..您将如何从我的代码中获得 selected = [pickerView date]..谢谢 oh k.. 得到它会更新自定义pickerView的答案。这将解决您的问题

以上是关于如何从 iOS 中的操作表中获取选择器值?的主要内容,如果未能解决你的问题,请参考以下文章

来自先前选择器的选择器值 - CoreData/SwiftUI

获取查询选择器值d3.js

使用 jQueryUI 获取日期选择器值

如何将 jQuery 日期选择器值保存到数据库并从数据库中检索

SwiftUI 从 CoreData 设置初始选择器值

每当我选择微调器值时如何隐藏标签?