2017-04-13 9 views
0

最初のピッカーから項目を選択し、他のピッカーの項目を選択してボタンをクリックすると、結果がテキストフィールドに表示されます。どうやってやるの?ボタンと1つの結果を迅速に結ぶ2つのピッカー

すでに2つのピッカー、テキストフィールド、および1つのボタンが作成されています。たとえば、ユーザーが最初のスピナーから名前を、2番目のスピナーからidを選択すると、ボタンをクリックするとテキストビューに電話番号が表示されます。

これは私がこれまでにやったことです:

// // ViewController.swift // test001 // // Created by Ahmed N. on 
7/14/1438 AH. // Copyright © 1438 Ahmed N. All rights reserved. // 

import UIKit 

class Viewkm: UIViewController, 
UIPickerViewDataSource,UIPickerViewDelegate { 
    @IBOutlet weak var array1: UIPickerView! 
    @IBOutlet weak var array2: UIPickerView! 
    @IBOutlet weak var result: UITextField! 

    var array:NSArray = [] 
    var array12:NSArray = [] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     array = ["3","2","1"] 
     array12 = ["Nasser","meachal","Ahmed"] 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 1 
    } 

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     if (pickerView.tag == 1){ 
      return array.count 
     }else{ 
      return array12.count 
     } 
    } 

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     if (pickerView.tag == 1){ 
      return "\(array[row])" 
     }else{ 
      return "\(array12[row])" 
     } 
    } 

    public func numberOfComponents(in pickerView: UIPickerView) -> Int{ 
     return 1 
    } 

    @IBAction func getResult(_ sender: UIButton) { 
     var select1 = array[array1.selectedRow(inComponent: 0)] 
     var select2 = array12[array2.selectedRow(inComponent: 0)] 

     if (select1 == "1") && (select2 = "Ahmed") { 
      getResult.setTitle("Telephone number...", result: .Normal) 
     } 
    } 
} 

**** ****アップデート

// // ViewController.swift // test001 // // Created  by Ahmed N. on 7/14/1438 AH. // Copyright © 1438 Ahmed N. All 

の権利を保有。 //

輸入のUIKit

//ここ++++++++++++++私の腸エラークラスViewkm: のUIViewController、
UIPickerViewDataSource、UIPickerViewDelegate {

@IBOutlet weak var array1: UIPickerView! 
@IBOutlet weak var array2: UIPickerView! 
//this is a text failt that i want to set tge resut in 
@IBOutlet weak var result: UITextField! 

// i did these two 

var selectedRow1 : Int 
var selectedRow2 : Int 

var array:NSArray = [] 
var array12:NSArray = [] 

// array fo numbers 
var arrayNumbers:NSArray = [] 


override func viewDidLoad() { 
    super.viewDidLoad() 
    array = ["3","2","1"] 
    array12 = ["Nasser","meachal","Ahmed"] 
    arrayNumbers = ["400","500","4000"] 






} 



func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    if (pickerView.tag == 1){ 
     self.selectedRow1 = row 
    }else{ 
     self.selectedRow1 = row 
    } 
} 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
    return 1 
} 

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    if (pickerView.tag == 1){ 
     return array.count 
    }else{ 
     return array12.count 
    } 
} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    if (pickerView.tag == 1){ 
     return "\(array[row])" 
    }else{ 
     return "\(array12[row])" 
    } 


} 
public func numberOfComponents(in pickerView: UIPickerView) -> Int{ 
    return 1 
} 




@IBAction func getResult(_ sender: UIButton) { 
    var select1 = array[self.selectedRow1] 
    var select2 = array12[self.selectedRow2] 


    // error syaed : binert opreater "==" cannot be applied to type "any" or "String" 
    if (select1 == "1") && (select2 = "Ahmed") { 
     //And you can show the number from array list 

     // ******************** error sayed : cannot call value of non-function type String 
     result.text("Telephone number...\(self.arrayNumber[self.selectedrow1])", result: .Normal) 
    } 
} 



} 

答えて

1

これにはpickerviewデリゲートメソッドを使用できます。

//those two for selected pickerView rows 
    var selectedRow1 : Int 
    var selectedRow2 : Int 
    //this array for the numbers. You should fill this array with users number maybe. 
    var arrayNumbers:NSArray = [] 
    //pickerView delegate method, the row keyword shows which row is selected 
    optional func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    if (pickerView.tag == 1){ 
       self.selectedRow1 = row 
      }else{ 
       self.selectedRow1 = row 
      } 
    } 
    //your button action be like this 
    @IBAction func getResult(_ sender: UIButton) { 
      var select1 = array[self.selectedRow1] 
      var select2 = array12[self.selectedRow2] 
      //your arrray type is Any 
      if (String(select1) == "1") && (String(select2) = "Ahmed") { 
    //And you can show the number from array list 
       getResult.setTitle("Telephone number...\(self.arrayNumber[self.selectedrow1])", result: .Normal) 
      } 
    } 
+0

それは私がそのことについて – Ahmed

+0

ボタンでエラーを腸私のために動作しません...リプレイしていただきありがとうございます。私も更新しました。 select配列[]とarray12 []のいずれかはAnyです。あなたは私の私の編集された答えを試してください。または配列を定義する必要があります: 'var配列:[String] = [] var array12:[String] = []' – Ahmed

+0

私のミスで申し訳ありませんplsは更新を参照してください – bilaldogan

関連する問題