我的视图控制器中有两个UIPickerview
,pickerView1
和pickerView2
。
我想在这里实现的是当我从pickerView1
中选择一个字符串时,它会自动更改pickerView2
的字符串。
我创建了一个第3节,因为有很多字符串,理想情况下我想在第1部分中全部使用,因为我目前将代码设置为3个选择器视图,但我只想要两个选择器视图。
这是一个例子。
Pickerview1包含“a”,“b”,“c”,“d”。
如果选择“a”,pickerView2
将显示可供选择的特定字符串,如果我选择“b”,那么“a”的字符串将不会显示,但“b”的字符串将会显示单独显示。
在第2部分中,我希望每个字段与第1部分和第3部分中定义的子字符串相对应,然后填充第二个UIpickerview,因此每次我在第一个选择器视图中选择一个字符串时,第二个uipickerview为此生成特定字符串。
这是我的代码:
//PickerView Category IBOutlets
@IBOutlet var pickerView1: UIPickerView! = UIPickerView()
@IBOutlet var pickerView2: UIPickerView! = UIPickerView()
@IBOutlet var pickerView3: UIPickerView! = UIPickerView()
@IBOutlet var textField1: UITextField! = UITextField()
@IBOutlet var textField2: UITextField! = UITextField()
@IBOutlet var textField3: UITextField! = UITextField()
var SECTION2 = ["Select", "Criminal Activity", "Begging","Harassment", "Criminal Damage", "Disruption Of Service", "Drunken Behaviour","Fare Evasion", "Feet on Seats", "Hate Crime", "Inappropriate Sexual Behaviour", "Litter", "Missile Throwing", "Noise","Rowdy Behaviour", "Smoking Tobacco", "Drugs", "Threats/abuse/intimidation towards Staff", "Threats/abuse/intimdation towards Passengers" ]
var SECTION1 = ["Select", "*>>>Criminal Activity<<<*", "Assault", "Arson", "Trespass", "Spitting", "*>>>Begging<<<*", "On Board", "Off Board", "*>>>Harassment<<<*", "Stalking", "On Board", "At Stop/Station", "Bullying", "*>>>Criminal Damage<<<*", "Damage to Exterior", "Damage to Interior", "Glass Breakage","Grafitti", "Window Etching", "*>>>Disruption Of Service<<<*", "Interfering with the engine", "Opening emergency exits", "Pressing emergency stop/handles", "Throwing debris on to the line/track", "*>>>Drunken Behaviour<<<*", "Drinking on the mode of transport", "Drinking in the station/stop", "Aggressive Drunks", "*>>>Fare Evasion<<<*", "Fraudulent Pass", "None payment of fare", "*>>>Feet on Seats<<<*", "Purposeful Obstruction" ]
var SECTION3 = ["Select", "*>>>Hate Crime<<<*", "Disability", "Ethnicity", "Gender", "Race","Religion", "Sexual Orientation", "*>>>Litter<<<*", "On Board", "At station/stop", "*>>>Missile Throwing<<<*", "Stone Throwing", "Throwing Objects", "*>>>Noise<<<*", "Inappropriate Musical Content", "Loud Music", "*>>>Rowdy Behaviour<<<*", "School Children", "Shouting/Swearing", "Within Shelter", "Within Station/Stop"," Groups/Gangs", "*>>>Smoking Tobacco<<<*", "On Board", "At station/stop", "*>>>Drugs<<<*", "Smoking Drugs", "Drug Paraphernalia", "Drug Taking", "Drug Dealing", "*>>>Threats/abuse/intimidation towards Staff<<<*", "On Board", "At station/stop", "*>>>Threats/abuse/intimidation towards Passengers<<<*", "On Board", "At station/stop" ]
override func viewDidLoad() {
super.viewDidLoad()
var Viewcontroller: () =
pickerView1 = UIPickerView()
pickerView2 = UIPickerView()
pickerView3 = UIPickerView()
pickerView1.delegate = self
pickerView2.delegate = self
pickerView3.delegate = self
self.textField1.inputView = self.pickerView1;
self.textField2.inputView = self.pickerView2;
self.textField3.inputView = self.pickerView3;
pickerView1.tag = 0
pickerView2.tag = 1
pickerView3.tag = 2
textField1.inputView = pickerView1
textField2.inputView = pickerView2
textField3.inputView = pickerView3
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 0 {
return SECTION1.count
} else if pickerView.tag == 1 {
return SECTION2.count
} else if pickerView.tag == 2 {
return SECTION3.count
}
return 1
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
if pickerView.tag == 0 {
return SECTION1[row]
} else if pickerView.tag == 1 {
return SECTION2[row]
} else if pickerView.tag == 2 {
return SECTION3[row]
}
return ""
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 0 {
textField1.text = SECTION1[row]
} else if pickerView.tag == 1 {
textField2.text = SECTION2[row]
} else if pickerView.tag == 2 {
textField3.text = SECTION3[row]
}
}
}
答案 0 :(得分:2)
设置全局变量
var data1:NSMutableArray=["Apple","Mango","Banana"]
var data2:NSMutableArray=[["greenApple","whiteApple","yellowApple"],["greenMango","whiteMango","yelloMango"],["greenBanana","whiteBanana","yellowBanana"]]
var data3:NSArray = []
为pickerViews设置标签 - pickerView1(比如1)和pickerView2(比如说2)。
override func viewDidLoad() {
super.viewDidLoad()
pickerView1.tag=1;
pickerView2.tag=2;
data3=["greenApple","whiteApple","yellowApple"] //initialise the array with the data
}
在委托方法
中设置标题func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
if pickerView.tag==1 {
return data1[row] as! String
}
else {
return data3[row] as! String
}
}
在选择委托中,如果选择了选择器,则根据pickerView1选择为data3分配所需数据并重新加载pickerView2
func pickerView(pickerView: UIPickerView,
didSelectRow row: Int,
inComponent component: Int)
{
if pickerView.tag==1 {
data3=data2[row] as! NSArray
pickerView2.reloadAllComponents() // reload pickerview2
}
}
答案 1 :(得分:0)
如果要符合这些协议,则需要实现UIPickerViewDataSource和UIPickerViewDelegate所需的所有方法。
并为ViewController.swift
尝试此代码导入UIKit 进口基金会
类ViewController:UIViewController,UITextFieldDelegate,UIPickerViewDataSource,UIPickerViewDelegate {
EKEventStore *eventStore = [[[EKEventStore alloc] init] autorelease];
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) {
// iOS 6 and later
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (granted) {
// code here for when the user allows your app to access the calendar
[self performCalendarActivity:eventStore];
} else {
// code here for when the user does NOT allow your app to access the calendar
}
}];
} else {
// code here
[self performCalendarActivity:eventStore];
}
func pickerView(pickerView:UIPickerView,titleForRow row:Int,forComponent component:Int) - &gt;串! {
@IBOutlet var pickerView1: UIPickerView! = UIPickerView()
@IBOutlet var pickerView2: UIPickerView! = UIPickerView()
@IBOutlet var textField1: UITextField! = UITextField()
@IBOutlet var textField2: UITextField! = UITextField()
var data1:NSMutableArray=["Apple","Mango","Banana"]
var data2:NSMutableArray=[["greenApple","whiteApple","yellowApple"],["greenMango","whiteMango","yelloMango"],["greenBanana","whiteBanana","yellowBanana"]]
var data3:NSArray = []
override func viewDidLoad() {
super.viewDidLoad()
pickerView1.tag=1;
pickerView2.tag=2;
data3=["greenApple","whiteApple","yellowApple"] //initialise the array with the data
textField1.text = data1[0] as! String
textField2.text = data3[0] as! String
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return 3;
}
}
func pickerView(pickerView:UIPickerView,didSelectRow行:Int,inComponent组件:Int) {
if pickerView.tag==1 {
return data1[row] as! String
}
else {
return data3[row] as! String
}
}
if pickerView.tag==1 {
data3=data2[row] as! NSArray
pickerView2.reloadAllComponents() // reload pickerview2
}
if pickerView.tag==1 {
textField1.text = data1[row] as! String
}else{
textField2.text = data3[row] as! String
}
}