Создайте несколько viewcontroller с одинаковыми глобальными переменными - PullRequest
0 голосов
/ 22 февраля 2019

Как объявить viewcontroller из списка viewcontroller, у которого есть переменные, подобные , без повторения себя и без создания базового viewcontroller ?Что-то вроде:

let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)

swtich(type){
  case "A":
    vcGeneric = storyboard.instantiateViewController(withIdentifier: "TypeAViewController") as! TypeAViewController
    break;
  case "B":
    vcGeneric = storyboard.instantiateViewController(withIdentifier: "TypeBViewController") as! TypeBViewController
    break;
}
vcGeneric.variableSame1 = "SomeValue1"
vcGeneric.variableSame2 = "SomeValue2"
vcGeneric.variableSame3 = "SomeValue3"
self.present(vcGeneric, animated: true, completion: nil)

Я пытался объявить var vcGeneric: UIViewController, но я получаю ошибку компиляции Value of type "UIViewController" has no member "variableSame1"

1 Ответ

0 голосов
/ 22 февраля 2019

Используйте протокол для определения общих свойств, например:

protocol CommonViewController {
    var variableSame1: String? { get set }
    var variableSame2: String? { get set }
    var variableSame3: String? { get set }
}

class ViewController1: UIViewController, CommonViewController {
    var variableSame1: String?
    var variableSame2: String?
    var variableSame3: String?
}
class ViewController2: UIViewController, CommonViewController {
    var variableSame1: String?
    var variableSame2: String?
    var variableSame3: String?
}
class ViewController3: UIViewController, CommonViewController {
    var variableSame1: String?
    var variableSame2: String?
    var variableSame3: String?
}

let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
var type = "A"
var vcGeneric: CommonViewController?
switch type {
case "A":
    vcGeneric = storyboard.instantiateViewController(withIdentifier: "TypeAViewController") as! ViewController1
    break;
case "B":
    vcGeneric = storyboard.instantiateViewController(withIdentifier: "TypeBViewController") as! ViewController2
    break;
default:
    vcGeneric = storyboard.instantiateViewController(withIdentifier: "TypeCViewController") as! ViewController3
    break;
}
vcGeneric.variableSame1 = "SomeValue1"
vcGeneric.variableSame2 = "SomeValue2"
vcGeneric.variableSame3 = "SomeValue3"
self.present(vcGeneric, animated: true, completion: nil)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...