Как открыть всплывающее окно с помощью кода - PullRequest
0 голосов
/ 25 мая 2018

Я очень начинающий программист, который пытается сделать следующее: у меня есть простая игра, которая генерирует всплывающие окна (через отдельные контроллеры представления), нажимая определенные кнопки.Я также хотел бы добавить некоторый код (который запускается после некоторого события), который открывает всплывающее окно при определенных условиях.Для этого я создал новый контроллер представления и представления и связал их.Полностью контроллер представления выглядит следующим образом:

import UIKit

class P2_Gift_Pop_Up: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        print("I was here")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }   
}

Теперь я пытаюсь вызвать этот контроллер представления (чтобы всплывающее представление было отображено), используя следующую строку в коде в главном viewcontroller:

P2_Gift_Pop_Up()

Swift принимает это еще, когда я запускаю приложение, ничего не происходит.Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Поскольку я не хотел использовать кнопку, я использовал только следующий фрагмент в контроллере основного вида.

let vc = P2_Gift_Pop_Up()
vc.modalPresentationStyle = .overCurrentContext 
present(vc, animated: true, completion: nil)

Запускается запуск кода во всплывающем окне без каких-либо кнопок, то есть того, что я хотел.

Однако, когда я запускаю следующий код

import UIKit

class P2_Gift_Pop_Up: UIViewController {


@IBOutlet weak var Slot1: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()



    Slot1.setImage(UIImage(named: "Card 2 Red"), for: .normal)

  }

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}

}

Iполучить следующую ошибку: Поток 1: неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

Что не так?Тот же код в всплывающих окнах, которые я открыл с помощью кнопок в контроллере основного вида, работает.

Ps.Извините, если публикация этого в качестве ответа на мой собственный вопрос является неправильным способом решения этой проблемы (комментирование стало нечитаемым, когда я включил код, редактирование исходного запроса изменилось бы по сравнению с тем, что я хотел знать изначально, и я отвечаю на то, что изначальнохотел знать)

0 голосов
/ 25 мая 2018
class MainViewController: UIViewController {

    let button = UIButton()

    override func viewDidLoad() {
        super.viewDidLoad()

        // setup button frame or constraint.. (unless done in IB)

        // add target to button (or add an IBOutlet from IB)

        button.addTarget(self, action: #selector(buttonClicked(_ :)), for: .touchUpInside)
    }

    @objc func buttonClicked(_ sender: UIButton) {
        let vc = P2_Gift_Pop_Up()
        vc.modalPresentationStyle = .overCurrentContext
        present(vc, animated: true, completion: nil)
    }
}

А внутри P2_Gift_Pop_Up VC:

class P2_Gift_Pop_Up: UIViewController {

    let dismissButton = UIButton()

    override func viewDidLoad() {
        super.viewDidLoad()

        // setup button frame or constraint
        // ..

        // add target to button

        dismissButton.addTarget(self, action: #selector(buttonClicked(_ :)), for: .touchUpInside)
    }

    @objc func buttonClicked(_ sender: UIButton) {
        dismiss(animated: true, completion: nil)
    }
}

Вызов P2_Gift_Pop_Up() в viewController не представляет его, в вашем случае модальная презентация работает хорошо, потому что вы хотите, чтобы P2_Gift_Pop_Up() всплыло,

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