Как мне создать / добавить UIView после viewDidLoad? - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь создать кнопки после получения ответа от сетевого запроса.Как мне это сделать и расположить их после их создания, после загрузки представления .Я также создаю свои виды программно и использую AutoLayout.

CustomView.swift

class CustomView: UIView {

    override init(frame: CGRect) {
        super.init(frame: UIScreen.main.bounds)
        backgroundColor = .red
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

ViewController.swift

// Load custom view
override func loadView() {
    view = CustomView()
}

override func viewDidLoad() {
    super.viewDidLoad()

    // Create buttons after getting response
    viewModel.output.apiOutput
        .subscribe(onNext: { posts in
            for post in posts {
                // create buttons
            }
        })
        .dispose(by: disposeBag)

}

Ответы [ 2 ]

0 голосов
/ 06 июня 2019
/// Helper function to create a new button.
func createButton(_ title: String) -> UIButton {
    let button = UIButton()
    button.backgroundColor = .blue
    button.setTitle(title, .normal)

    // Add the button as a subview.
    self.view.addSubview(button)
}

override func viewDidLoad() {
    super.viewDidLoad()

    // Just set the viewController's view to your custom view here.
    self.view = CustomView()

    // Create buttons after getting response
    viewModel.output.apiOutput
        .subscribe(onNext: { posts in
            for post in posts {
                // Create a button. Change "title" to the title of your post, etc.
                let button = createButton("Title")
                // Constrain your button here!
            }
        })
        .dispose(by: disposeBag)
}

Где написано // Constrain your button here! - если вам нужно несколько кнопок в строке или столбце, я бы порекомендовал использовать UIStackView и добавить их, например, в виде ArrangedSubviews.

0 голосов
/ 05 июня 2019

Попробуйте добавить свои кнопки к переопределению viewWillAppear ()

https://developer.apple.com/documentation/uikit/uiviewcontroller/1621510-viewwillappear

Или эта более старая публикация может помочь вам:

Как создатькнопка программно?

Но я бы попробовал сначала использовать viewWillAppear ()

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