2014-10-31 16 views
11

Làm thế nào tôi có thể nhận được giá trị được chọn của UIPickerViewControl trong Swift?Nhận giá trị được chọn của UIPickerViewControl trong Swift

tôi đã cố gắng một cái gì đó như thế này:

labelTest.text = Spinner1.selectedRowInComponent(0).description 

Nhưng điều này chỉ trả về chỉ số được lựa chọn. Tôi cần giá trị.

Bất kỳ ai biết cách thực hiện việc này?

+2

Nếu bạn không biết giá trị nào ở chỉ mục x, còn ai khác? Bạn đã lấp đầy bộ chọn với nguồn dữ liệu, vì vậy bạn phải biết nội dung bên trong là gì. –

+0

let selectedValue = rolePicker.selectedRowInComponent (0) cho tôi một giá trị. Ngoài ra, hãy để selectedValue = rolePicker.selectedRowInComponent (0) .hashValue cũng có thể cung cấp cho bạn một cái gì đó sử dụng. –

Trả lời

33

bạn sẽ phải thiết lập các đại biểu xem bảng chọn để bản thân và ghi đè lên chức năng này

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
    { 
     // use the row to get the selected row from the picker view 
     // using the row extract the value from your datasource (array[row]) 
    } 

hoặc

bạn có thể sử dụng để trích xuất theo sử dụng của bạn

var selectedValue = pickerViewContent[pickerView.selectedRowInComponent(0)] 

nơi pickerViewContent là mảng dữ liệu của bạnSource

+0

Tôi hiểu phương pháp cuối cùng, nhưng làm cách nào tôi có thể truy xuất mảng dữ liệu của mình? – Programmer1994

+0

nơi bạn đã đặt nguồn dữ liệu cho chế độ xem bộ chọn, bạn phải đặt nó trong cùng một lớp. –

5

Swift 3: Giả sử bạn muốn chuỗi giá trị của mỗi hàng chọn

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

     let valueSelected = yourDataSourceArray[row] as String 
} 
3

Swift 4

let selectedYearPicker = pickerData[yearPicker.selectedRow(inComponent: 
print(selectedYearPicker) 

Hoặc

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    let yearValueSelected = pickerData[row] as String 
    print(yearValueSelected) 
} 
0

Tất cả các câu trả lời cho đến nay giả định bạn có thể dễ dàng kết nối hàng đã chọn trở lại mảng dữ liệu gốc. Giải pháp là khá dễ dàng nếu bạn có thể làm điều đó, nhưng câu hỏi cụ thể địa chỉ các trường hợp mảng ban đầu là không có sẵn. Ví dụ tôi có 3 bộ chọn trong các ô bảng mở rộng khi một hàng được khai thác và chúng hiển thị 3 mảng khác nhau.

Nó sẽ giúp tôi giải quyết nhiều rắc rối nếu tôi có thể truy xuất văn bản đã chọn từ bộ chọn, có thể trong mã cho ô tùy chỉnh của tôi, thay vì phải tìm ra bộ chọn nào, mảng dữ liệu nào, hàng nào và Sớm.

Nếu câu trả lời là bạn không thể, OK, tôi sẽ sắp xếp tất cả. Nhưng câu hỏi đặt ra là liệu có một lối tắt hay không.

+0

Đừng bận tâm. Quay trở lại hàng đã chọn của mảng dữ liệu đầu vào của trình chọn đã dễ dàng hơn tôi nghĩ. Không cần cho một phím tắt, ngay cả khi có một phím tắt. –

Các vấn đề liên quan