2016-01-28 4 views
1

Я пытаюсь перемещаться между двумя диспетчерами просмотра, используя UIPickerview, поэтому я сначала научился использовать didSelectRow для изменения названия метки, а затем я попытался использовать некоторый код для перехода к другому viewcontroller, но это не сработало.Как перемещаться между двумя диспетчерами view, используя UIPickerview

код, который я использовал, был:

import UIKit 

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

@IBOutlet var label: UILabel! 

@IBOutlet var pickerView: UIPickerView! 
var food = ["hello", "hi", "hey"] 

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

    pickerView.delegate = self 
    pickerView.dataSource = self 


} 

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

} 

public func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 

    return 1 
} 
public func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

    return food.count 
} 

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 

    return food[row] 
} 

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    placementAnswer = row 
} 

@IBAction func labelChanged(sender: UIButton) { 

    if (placementAnswer == 0){ 

    }else if (placementAnswer == 1){ 

     let view2 = self.storyboard?.instantiateViewControllerWithIdentifier("view2") as! ViewController2 
     self.navigationController?.pushViewController(view2, animated: true) 

    }else if (placementAnswer == 2){ 
} 
} 
} 
+0

Является ли ваш self.navigationController действительным объектом или он равен нулю. Фактически используется навигационный контроллер. – SayeedHussain

+0

да это остальная часть кода: @IBAction функ labelChanged (отправитель: UIButton) { если (placementAnswer == 0) { } еще если (placementAnswer == 1) { пусть View2 = self.storyboard? .instantiateViewControllerWithIdentifier ("view2") как! ? ViewController2 self.navigationController .pushViewController (view2, анимированные: правда) } еще если (placementAnswer == 2) { } } } –

+0

Вы можете добавить точку останова в labelChanged и если это проверить на самом деле вызывается? – SayeedHussain

ответ

0

Как paranoidcoder указал, что я не уверен, что ваш labelChanged метод вызывался, который может быть проблема с существующим кодом.

Я предполагаю, что вы хотите изменить контроллер представления после выбора определенной строки в представлении выбора. Приведение выражения if для изменения представлений в didSelectRow будет иметь наибольший смысл в этом случае.

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
{ 
    placementAnswer = row // unnecessary variable 

    if (placementAnswer == 0){} 
    else if (placementAnswer == 1) 
    { 
     let view2 = self.storyboard?.instantiateViewControllerWithIdentifier("view2") as! ViewController2 
     self.navigationController?.pushViewController(view2, animated: true) 
    } 
    else if (placementAnswer == 2) {} 
} 
Смежные вопросы