view.addSubview (: ) не работает в swift playgrounds

#ios #swift #uiview

#iOS #swift #uiview

Вопрос:

У меня есть swift playground, и я создал UIButton под названием ‘StartButton’.

У меня есть функция, которая настраивает параметры UIButton.

 
    func setupStartButton() {
        startButton.frame = CGRect(x: 15, y: 550, width: 125, height: 50)
        startButton.backgroundColor = UIColor(ciColor: CIColor(red: 255/255, green: 0/255, blue: 77/255, alpha: 1.0))
        startButton.layer.cornerRadius = 20
        startButton.setTitle("Start", for: .normal)
        startButton.setTitleColor(.white, for: .normal)
        startButton.addTarget(self, action: #selector(startButtonPressed), for: .touchUpInside)
        view.addSubview(startButton)
    }

  

Я вызываю это в viewDidLoad

 
    override func viewDidLoad() {
        let view = UIView(frame: CGRect(x: 0, y: 0, width: 524, height: 766))
        view.backgroundColor = .white

        setupStartButton()

        PlaygroundPage.current.liveView = view
        PlaygroundPage.current.needsIndefiniteExecution = true
    } 
  

Когда я запускаю игровую площадку, она не показывает кнопку.
Как мне показать кнопку.
Спасибо

Комментарии:

1. В принципе, игровая площадка — неподходящее место для этого. Используйте реальный проект приложения.

2. Я создаю проект для стипендиальной программы WWDC, которая, к сожалению, должна быть в playgrounds.

3. кстати, нет необходимости создавать CIColor просто для того, чтобы создать UIColor из него. Вы можете создавать UIColor напрямую.

Ответ №1:

Вы устанавливаете PlaygroundPage.current.liveView значение локального, view созданного в viewDidLoad . Это не тот вид контроллера представления, к которому вы добавляете кнопку в setupStartButton .

Я бы удалил строку, let view = UIView(frame: CGRect(x: 0, y: 0, width: 524, height: 766)) тогда каждая ссылка на view будет представлением контроллера представления.

Вам следует удалить код playground из viewDidLoad метода. После класса view controller вы можете создать экземпляр view controller и настроить игровую площадку:

Что-то вроде:

 class MyViewController: UIViewController {
    // your code
}

PlaygroundPage.current.liveView = MyViewController()