Программно добавить UIView, назначить класс, удалить его, повторить с другим классом (Swift 4) - PullRequest
0 голосов
/ 12 июля 2020

Возможно ли на одном UIViewController программно:

  • добавить UIView
  • назначить ему класс
  • удалить UIView
  • повторить с другим классом?

Примерно как следующий псевдокод:

func createViewWithCustomClass(classChoice: String)
{ 
   create new UIView on mainViewController
   assign classChoice class to the UIView
}

func buttonA (_sender: UIButton) 
    remove view 
    createViewWithCustomClass(classChoice: "classA")
}

func buttonB (_sender: UIButton) 
    remove view 
    createViewWithCustomClass(classChoice: "classB")
}

Ответы [ 2 ]

1 голос
/ 12 июля 2020
createViewWithCustomClass(classChoice: String)

Объекты не создаются этим динамическим c способом в Swift. Конечно, у вас могут быть две кнопки, которые создают экземпляры разных классов, но вы не можете воплотить, какой класс вы хотите, в строке . Вы должны произнести его название:

func buttonA (_sender: UIButton) {
    remove view 
    let v = ClassA()
}

func buttonB (_sender: UIButton) {
    remove view 
    let v = ClassB()
}
0 голосов
/ 14 июля 2020

Оказывается, ЧРЕЗВЫЧАЙНО просто: всего одна строка: graphView = SelectedClassName()!

var graphView = UIView()

func createViewWithCustomClass(classChoice: String)
{ 
    // remove old graph
    graphView.removeFromSuperView

    // assign class
    switch selectedGraph {
        case "ClassA": graphView = ClassA()
        case "ClassB": graphView = ClassB()
        //  etc.
        default: break
    }

    // add graph 
    view.addSubview(graphView)
}

func buttonA (_sender: UIButton) 
    remove view 
    createViewWithCustomClass(classChoice: "ClassA")
}

func buttonB (_sender: UIButton) 
    remove view 
    createViewWithCustomClass(classChoice: "ClassB")
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...