我正在为我正在上课的一个程序工作,程序的一部分需要UIPickerView带有图像.我有拾取器启动并运行,但拾取器中行的高度仍然太小,导致图像(100x100)重叠.我正在寻找一种方法来改变它UIPickerView,使图像适合一行,没有重叠.谢谢
有很多这样的问题,但我相信我的案例是独一无二的.
我在内部单击文本框时会弹出一个选择器视图.用户在选择器视图中选择他们的位置,并将其放入文本框中.
打开选择器视图时,滑块位于第一个元素上,但是如果我单击完成按钮以最小化选择器视图,则不会选择任何元素(即,您必须向下滚动并向上选择第一个元素)
我试过了
[pickerView selectRow:0 inComponent:0 animated:YES];
Run Code Online (Sandbox Code Playgroud)
以及它的各种组合,但它只将滑块放在该元素上,而不是实际选择它.
一些答案说要在viewDidLoad()方法中应用上面的代码,但不幸的是我从Web服务中提取位置数组并且不能这样做.
理想情况下,我想工作 - 用户在文本框中单击,选择器视图正常弹出,如果在此时单击完成按钮,则选择第一个项目.
先感谢您
编辑12-14-2015:这个问题再次在iOS 7,iOS 8,iOS 9上频繁报道....我认为Apple不再需要这种控制了,应该禁止我们使用它而不是让这样的专业窃听器
我使用UIPickerView和从Xib加载的自定义视图.我正在使用这种方法
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view
Run Code Online (Sandbox Code Playgroud)
从UIPickerViewDelegate重用我的视图.
使用iOS 6,我的UIPickerview完美运行,我的视图可以重复使用.
从iOS 7开始,reusingView总是为nil,所以我需要为每一行加载NIB(我有250行).我的观点正在做一些处理,所以它可以占用一小部分内存,但x250 =大内存泄漏.
为了确定问题所在,我用UILabel做了一个简单的项目:
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
UILabel *label = (UILabel *)view;
if(view == nil) {
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 76)];
}
else {
NSLog(@"*******************************************************");
}
NSLog(@"Current inndex : %i",row);
label.text = [NSString stringWithFormat:@"TITRE %i", row];
return label;
}
Run Code Online (Sandbox Code Playgroud)
使用iOS 6,我的视图可以正确重用:
2013-12-17 14:27:25.395 EssaiReusedViewPicker [261:907]当前的指数:220 2013-12-17 14:27:25.396 EssaiReusedViewPicker [261:907]*******************************************************2013-12-17 14:27: 25.397 EssaiReusedViewPicker [261:907]当前的指数:221 2013-12-17 14:27:25.404 EssaiReusedViewPicker …
我接受NSString为
NSString *value = [valuelist objectAtIndex:valuerow];
NSString *value2 = [valuelist2 objectAtIndex:valuerow2];
Run Code Online (Sandbox Code Playgroud)
来自UIPickerView.我想要
double *cal = value + (value2 * 8) + 3;
NSString *message =[[NSString alloc] initWithFormat:@"%@",cal];
Run Code Online (Sandbox Code Playgroud)
在我对它进行计算之后,我应该能够在消息中获取字符串..请帮助我的程序崩溃
我想在工具栏上单击完成按钮后关闭UIPickerView(滑出视图).我已将UIPickerView链接为UITextField的inputView,并将UIToolbar设置为UIPickerView的inputAccessoryView.但是,我调用resignFirstResponder的函数不会将UIPicker滑出视图.任何帮助表示赞赏,并提前致谢!
import UIKit
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
// Do any additional setup after loading the view, typically from a nib.
//initialization constants
let pickerView = UIPickerView()
let textField = UITextField()
let pickerData = ["1","2","three"]
override func viewDidLoad() {
//pickerview tool bar
let toolbar = UIToolbar(frame: CGRectMake(0, 0, 320, 44))
var items = [AnyObject]()
//making done button
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: Selector(donePressed()))
items.append(doneButton)
toolbar.barStyle = UIBarStyle.Black
toolbar.setItems(items, animated: true)
//creating textfields with a …Run Code Online (Sandbox Code Playgroud) 我试图在Swift PickerView中使用图像.我不知道如何让图像实际出现在组件中.我知道如何使用带有titleForRow函数的字符串来执行此操作,但我不知道如何使用图像执行此操作.到目前为止,这是我的代码:
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate {
@IBOutlet weak var pickerView: UIPickerView!
var imageArray: [UIImage] = [UIImage(named: "washington.jpg")!,
UIImage(named: "berlin.jpg")!, UIImage(named: "beijing.jpg")!,
UIImage(named: "tokyo.jpg")!]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// returns the number of 'columns' to display.
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int{
return 1
}
// returns the # …Run Code Online (Sandbox Code Playgroud) 我不知道我的编码有什么问题.我试着按照教程,但同样的错误发生.
错误:
类型'FourthViewController'不符合协议'UIPickerViewDataSource'
这是我的代码:
import UIKit
let characters = ["Jaja Bink", "Luke", "Han Solo", "Princess Leia"];
let weapons = ["LightSaber", "Pistol", "Keris"];
class FourthViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var doublePicker: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(pickerView: UIPickerView,
titleForRow row: Int,
forComponent component: …Run Code Online (Sandbox Code Playgroud) 我使用此代码在uiactionsheet中显示uipicker但当我单击关闭按钮时,我想从视图中删除操作表.那么应该删除actionSheet表单视图的代码.
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
[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];
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet:) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[closeButton release];
[actionSheet showInView:self.view];//[UIApplication mainWindow]];
[actionSheet setBounds:CGRectMake(0, 0, 320, …Run Code Online (Sandbox Code Playgroud) 我有一个带UIPickerView的应用程序.我正在使用该方法返回自定义视图
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
Run Code Online (Sandbox Code Playgroud)
它在iOS 6中显得很好.在iOS 7中,没有那么多 - 下面的屏幕截图.
请注意,在没有焦点的单元格中,第二列和第三列重叠.中心行是正确的.
有什么建议?

我一直在谷歌搜索如何在UIPickerView中获取当前选择的值,但在任何地方都提到使用row:0等等.
我有一个UIPickerView填充了字符串值,如"一个","两个"等.
现在,当我选择一个值让我们说"两个"时,无论如何我可以得到这个文本.
就像在UITextView中一样,它是_textview.text
uipickerview ×10
ios ×8
objective-c ×3
swift ×3
ios7 ×2
cocoa-touch ×1
iphone ×1
nsnumber ×1
nsstring ×1
uitextfield ×1
uitoolbar ×1
xcode ×1