2017-02-22 7 views
0

Я хочу передать данные с vc1 на vc2.
Как передавать данные без программирования segue и раскадровки?

vc1 есть много кнопок.
vc2 имеет много элементов и обнаруживает, что пользователь нажимает кнопку, которая показывает другой элемент.
Итак, я просто пишу два файла .swift, чтобы изменить другой интерфейс.

vc1:

let vc2 = vc2() 

func buttonClick(sender:UIButton) 
{ 
    switch sender { 

    case button1: 
     vc2.data = "name" 
     present(vc2, animated: true, completion: nil) 
     break 

    case button2: 
     vc2.data = "photo" 
     present(vc2, animated: true, completion: nil) 
     break 

    default: 
     print("default") 
    } 

VC2:

var data:NSString = "" 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    print("data is here : \(data)") 

    switch data { 

    case "name": 
    print("here is button1View") 
     break 
    case "photo": 
    print("here is button2View") 
     break 
    default: 
    print("default View") 
    } 

} 

печать данных является недействительным.
Что мне делать с этой идеей?

+0

Что ваша проблема снова? Что не работает? – danypata

+0

данные var: NSString = "", это неверно, напишите его как данные var: NSString? В текущем сценарии вы инициализируете переменную данных –

+0

Я знаю. как передать данные? –

ответ

-1

попробовать это в VC1

let vc2 = UIStoryboard(name: "storeyBoardID", bundle: nil).instantiateViewController(withIdentifier: "stroyboardIdOfcontroller") as? viewController2 

и

vc2.data = "name" 

и VC2 объявить переменные данные, как этого

var data:NSString? 

Надеется, что это поможет вам

0

проблемы смотреть как t шляпа у не инициализировать VC2 так я писать и пример и его работы для меня

@IBOutlet weak var button1: UIButton! 
@IBOutlet weak var button2: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

@IBAction func buttonClick(_ sender: UIButton) { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let vc2 = storyboard.instantiateViewController(withIdentifier :"vc2") as! vc2 
    switch sender { 

    case button1: 
     vc2.data = "name" 
     present(vc2, animated: true, completion: nil) 
     break 

    case button2: 
     vc2.data = "photo" 
     present(vc2, animated: true, completion: nil) 
     break 

    default: 
     print("default") 

} 
} 

и VC2

var data:NSString = "" 


override func viewDidLoad() { 
    super.viewDidLoad() 

    print("data is here : \(data)") 

    switch data { 

    case "name": 
     print("here is button1View") 
     break 
    case "photo": 
     print("here is button2View") 
     break 
    default: 
     print("default View") 
    } 

} 
Смежные вопросы