быстрые игровые площадки отображают Uiview с непрерывным циклом - PullRequest
0 голосов
/ 08 сентября 2018

Я создаю и отображаю uiview в окнах live view, когда я создаю кнопку и добавляю к uiview, программа завершается с непрерывным циклом, который непрерывно загружает кнопку. Кто-нибудь сталкивался с этой проблемой и, пожалуйста, скажите мне, почему: -)

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {

var label1 : UILabel?

override func loadView() {
    let view = UIView()
    view.backgroundColor = .white

    print("code run here ")

    let label = UILabel()
    label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
    label.text = "Hello World!"
    label.textColor = .black

    label1 = label
    view.addSubview(label)

    let  k1:UIButton = addnewbutton() as! UIButton
    //view.addSubview(k1)

    self.view = view
}

@objc func buttonPressed(sender: UIButton!) {
    var alertController = UIAlertController(title: "title", message: "message", preferredStyle: UIAlertControllerStyle.alert)
   self.present(alertController, animated: true, completion: nil)
}

func addnewbutton() -> UIView{
    var btn : UIButton
    btn = UIButton()
    btn.frame  = CGRect(x:200,y:300,width:100,height:25)
    btn.setTitle("clickme",for: UIControlState.normal)
    //btn.titleLabel?.text = "clickme"
    btn.backgroundColor = UIColor.black
    btn.titleLabel?.textColor = UIColor.white
    btn.titleColor(for: UIControlState.normal)
    btn.addTarget(self, action: #selector(buttonPressed), for: UIControlEvents.touchUpInside)
    view.addSubview(btn)

    return btn
    }
}

// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()

enter image description here

1 Ответ

0 голосов
/ 08 сентября 2018

Вы добавляете сюда кнопку

view.addSubview(btn)

внутри addnewbutton

, который рекурсивно ищет родительское представление VC, и он еще не установлен внутри loadView, поэтому управление вызывает его снова, и проблема возникает с бесконечным циклом, поэтому прокомментируйте эту строку и раскомментируйте эту

view.addSubview(k1) // which is inside loadView

Кстати, сделайте возврат addnewbutton в UIButton напрямую вместо приведения

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