2016-10-15 63 views
0

我很早就在proggraming,我正在嘗試構建一個應用程序,但我無法弄清楚如何解決我的問題。所有的幫助非常感謝!使用未解析的標識符,識別包含相同信息的2個不同的pickerView。在Swift

所以在我的應用程序中有2個pickerViews和每個pickerView包含相同的信息。我的問題是,我想要訪問來自兩者的信息,然後將其連接到Google或Yahoo,以在2之間找到正確的計算結果,並在顯示屏底部顯示該計算結果。

我所做的是使用函數didSelectRow pickerView,我添加了模態警報,以便當我滾動pickerView時,我可以告訴該函數正在工作,但它爲兩個pickerViews和我希望兩個pickerViews都是完全獨立的函數。

我的主要問題是,我無法訪問didSelectRow中的數據,以便我可以在另一個函數中進行計算(我已經設置了一個函數來處理帶有佔位符乘數的計算/轉換,直到我連接它到一個API)。我知道該函數的數據超出了範圍(這是編譯器給我的錯誤),但我不知道如何訪問這些信息,我一直在尋找幾個星期。

非常感謝你!所有的幫助非常感謝!!!!! Ps。這是在斯威夫特。

回答

1

如果創建@IBOutlet s到你的兩個pickerViews:

@IBOutlet weak var picker1: UIPickerView! 
@IBOutlet weak var picker2: UIPickerView! 

您可以訪問選定行的每個:

let row1 = picker1.selectedRow(inComponent: 0) 
let row2 = picker2.selectedRow(inComponent: 0) 

然後,您可以用這些作爲指標到屬於陣列爲您的採摘者提供數據。

舉個例子,我創建了兩個採摘期,我打印的總和每當採摘變化之一:

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

    @IBOutlet weak var picker1: UIPickerView! 
    @IBOutlet weak var picker2: UIPickerView! 

    var data = [1, 2, 3, 4, 5] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     let sum = data[picker1.selectedRow(inComponent: 0)] + data[picker2.selectedRow(inComponent: 0)] 
     print(sum) 
    } 

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return data.count 
    } 

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
     return String(data[row]) 
    } 
} 
+0

我有完全在你那裏,除了我需要有一個seprate功能是什麼用於計算/轉換,因爲它必須連接到API並將字符串轉換爲我已有的textField中的數字。我需要的只是從pickerViews中選擇的數據中獲得標題,並在顯示屏底部的標籤中顯示計算結果。 –

+0

你明白我在說什麼,或者你想讓我更深入嗎? –

+0

所以我只需要從那個didSelect函數中選中的數據的名稱顯示在另一個函數中,但我有一個範圍問題,並不知道如何解決它。 –

相關問題