【发布时间】:2011-09-05 09:57:24
【问题描述】:
我想为特定文本字段添加选择器视图而不是键盘,并直接在 .m 文件中使用内容填充选择器视图
最简单的方法是什么?
我可以直接在界面生成器中执行此操作,还是必须自己添加很多代码?
【问题讨论】:
标签: c# ios objective-c xamarin.ios uipickerview
我想为特定文本字段添加选择器视图而不是键盘,并直接在 .m 文件中使用内容填充选择器视图
最简单的方法是什么?
我可以直接在界面生成器中执行此操作,还是必须自己添加很多代码?
【问题讨论】:
标签: c# ios objective-c xamarin.ios uipickerview
对于任何 Xamarin.iOS 开发人员,以下是使用 C# 的方法
public partial class MyViewController : UIViewController
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
ConfigurePicker();
}
void ConfigurePicker()
{
var pickerTextField = new UITextField();
var picker = new UIPickerView
{
Model = new PickerViewModel(),
ShowSelectionIndicator = true
};
var screenWidth = UIScreen.MainScreen.Bounds.Width;
var pickerToolBar = new UIToolbar(new RectangleF(0, 0, (float)screenWidth, 44)) { BarStyle = UIBarStyle.Default, Translucent = true };
var flexibleSpaceButton = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, (sender, e) => pickerTextField.ResignFirstResponder());
pickerToolBar.SetItems(new[] { flexibleSpaceButton, doneButton }, false);
pickerTextField.InputView = picker;
pickerTextField.InputAccessoryView = pickerToolBar;
}
class PickerViewModel : UIPickerViewModel
{
int[] _pickerSource = new []{ 1, 2, 3, 4, 5 };
public override nint GetRowsInComponent(UIPickerView pickerView, nint component) => _pickerSource.Count;
public override string GetTitle(UIPickerView pickerView, nint row, nint component) => _pickerSource[(int)row];
public override nint GetComponentCount(UIPickerView pickerView) => 1;
}
}
【讨论】:
emotionPicker 错字。
您可以在 uitextfield 上使用自定义按钮。并且可以触发该按钮被按下的动作。 当pickerview关闭时,只需在文本框中添加选定的文本。
【讨论】:
为该文本字段设置标签并检查 textFieldDidBeginEditing 方法中的条件编写选择器代码。
【讨论】:
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self createPickerView];
}
-(void)createPickerView
{
//create Picker Here
}
或将按钮放在适当的位置 textfeild 根据它给出不作为。
【讨论】:
UIPickerView *picker = [[UIPickerView alloc] init];
picker.delegate = self;
picker.dataSource = self;
textField.inputView = picker;
【讨论】: