МЕТОД 1:
ПРИМЕЧАНИЕ. Это следует использовать, если у вас есть один контроллер представления, который необходимо настроить...
Попробуйте это:
ШАГ 1. Добавьте в свой View Controller
эту переменную:
var chosenState = String()
ШАГ 2. Добавьте эту функцию в View Controller
:
override func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
chosenState = yourPickerData[row] // yourPickerData = your state array
}
ШАГ 3. Если у вас есть переход, связанный с кнопкой, удалите его. Сделайте следующие вещи на раскадровке:
![введите здесь описание изображения](https://i.stack.imgur.com/7k6QO.jpg)
![введите здесь описание изображения](https://i.stack.imgur.com/Nck5V.jpg)
Выберите Показать соединение, щелкните переход и установите его идентификатор на customSegue
, как на картинке выше.
ШАГ 4. Внутри функции кнопки продолжить в контроллере представления добавьте следующее:
self.performSegueWithIdentifier("customSegue", sender: nil)
ШАГ 5. Добавьте метод prepareForSegue
в свой ViewController
:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "customSegue" {
if let secondViewController = segue.destinationViewController as? secondViewController {
secondViewController.customLabel.text = self.chosenState
// this is an example, but the view will contain the name of the chosen state by the time the button gets clicked... You can customize it...
}
}
}
Надеюсь это поможет! Дайте мне знать, что вы думаете!
МЕТОД 2:
ПРИМЕЧАНИЕ. Это следует использовать, если вы создали больше View Controllers
в раскадровке.
Попробуйте это:
ИНТЕРФЕЙС:
ШАГ 1. Перейдите к Storyboard
и добавьте кнопку на сцену под pickerView
, как показано на изображении ниже, и убедитесь, что класс вашего View Controller действительно установлен на ViewController.swift
: < a href="https://i.stack.imgur.com/uj5TZ.png" rel="nofollow noreferrer">![введите описание изображения здесь](https://i.stack.imgur.com/uj5TZ.png)
ШАГ 2: откройте Assistant Editor и подключите кнопку, нажав Ctrl+Щелкните и перетащите к ViewController.swift
, как показано ниже:
![введите здесь описание изображения](https://i .stack.imgur.com/j7Stg.gif)
Тип подключения: Действие, назовите его как хотите. После подключения появится вот это:
@IBAction func continueButtonPressed(sender: AnyObject?){
//this is your continue button function
}
ПРИМЕЧАНИЕ. В учебных целях я буду работать только с тремя штатами!
ШАГ 3: перетащите три файла View Controllers
(или столько, сколько хотите) на сцену, а затем добавьте в проект три (или столько, сколько хотите) файлов swift с именем StateName View Controller. Добавьте к ним этот код:
import UIKit
class StateNameViewController: UIViewController{
}
1:
2:
3:
4:
а>
ШАГ 4. Назначьте их классы следующим образом:
Выберите первый ViewController
на storyboard
, перейдите в Инспектор удостоверений и установите для него класс AlabamaViewController
. И так к другим 2.
ШАГ 5. Затем создайте переход для каждого из них и задайте для его идентификатора значение State Name Segue, например:
Как это сделать для первого:
Остальные 2: ![введите здесь описание изображения](https://i.stack.imgur.com/Mq6CR.gif)
ШАГ 6. Соедините pickerView
с кодом следующим образом:
![введите здесь описание изображения](https://i.stack.imgur.com/39MJk.jpg)
КОД:
ШАГ 7. Перейдите в свой ViewController и добавьте следующее:
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var pickerView: UIPickerView!
var pickerData = ["Alabama","Alaska","Kansas"]
var chosenState = ""
override func viewDidLoad() {
super.viewDidLoad()
pickerView.delegate = self
pickerView.dataSource = self
// Do any additional setup after loading the view, typically from a nib.
}
ШАГ 8. В InsideViewController.swift
добавьте следующие функции:
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
// The data to return for the row and component (column) that's being passed in
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}
//Called when the user changes the selection...
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
chosenState = pickerData[row]
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
ШАГ 9. Функция кнопки с добавленным кодом:
@IBAction func continueButtonPressed(_ sender: AnyObject) {
self.performSegue(withIdentifier: "\(chosenState)Segue", sender: nil)
}
ПРЕДВАРИТЕЛЬНЫЙ ПРОСМОТР – СПОСОБ 2:
ViewController.swift в конце:
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var pickerView: UIPickerView!
var pickerData = ["Alabama","Alaska","Kansas"]
var chosenState = ""
override func viewDidLoad() {
super.viewDidLoad()
pickerView.delegate = self
pickerView.dataSource = self
// 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.
}
@IBAction func continueButtonPressed(_ sender: AnyObject) {
self.performSegue(withIdentifier: "\(chosenState)Segue", sender: nil)
}
// The number of columns of data
// The number of rows of data
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
// The data to return for the row and component (column) that's being passed in
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}
//Called when the user changes the selection...
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
chosenState = pickerData[row]
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
}
Это оно! Скажи мне, если это поможет!
person
Mr. Xcoder
schedule
31.08.2016