2017-01-06 12 views
2

Привет, я занимаюсь разработкой приложения, используя быстрый в своем приложении. Я хочу использовать тосты и тосты, поэтому я пошел по ссылке: https://github.com/scalessec/Toast-Swift. Я могу использовать метод контроллера viewview, который работает хорошо, но я не могу использовать в методах делегирования приложения.Как использовать метод тоста в функциях делегата приложения с помощью swift

Мой код в моем приложении делегат:

func loadJsonData(){ 

    self.view.makeToastActivity(.center) 

} 

Приведенный выше код не работает, потому что приложение делегат не имеет вид участника ... Пожалуйста, помогите мне использовать это в моем приложении делегата.

+0

почему бы вам не использовать окно экземпляры в делегате приложения? –

+0

В объекте окна делегата приложения также есть свойство view. –

+0

Как использовать окно, чтобы сделать тост, вы можете привести пример – user7333282

ответ

1

попробовать это, пожалуйста, через это вы можете получить верхний контроллер вашего приложения, а затем вы можете добавить тост на верхнем контроллере

let win:UIWindow = UIApplication.shared.delegate!.window!! 
win.currentViewController()?.view 
+0

Я просто использовал self.window? .CurrentViewController() ?. view.makeToastActivity (.Center) .. он работает благодаря – user7333282

+0

, у вас есть дополнительное '!' После окна. ..также лучше безопасно разворачивать его. Возможно, этот метод get вызывается, когда приложение находится в фоновом режиме, то есть нет окна (как показано [здесь] (http://stackoverflow.com/a/41334428/5175709)) и приведет к сбою приложения ... – Honey

3

AppDelegate для обработки вещей, как инициализация приложения, закрытие приложения, уведомления, и т.д.

То, что вы хотите сделать, это:

  • Перейти к раскадровке (названный Main.storyboard)
  • Добавить ViewController раскадровку (drag it from the bottom right)
  • Создать Swift файл и назовите его FirstView, к примеру, и добавьте следующий код

FirstView.swift

import UIKit 

class FirstView: UIViewController 
{ 
    override func viewDidLoad() 
    { 
     self.view.makeToastActivity(.center); 
    } 
} 
  • Вернитесь к раскадровке
  • Нажмите на ViewController, который вы только что создали
  • Посмотрите в верхнем правом углу экрана и увидите шесть маленьких значков. Нажмите одну треть слева и введите FirstView в первом поле под названием «Класс» (see attached picture).

Примечание: убедитесь, что вы сохранили файл FirstView.swift, иначе это не сработает.

2

Как насчет индивидуального тоста? Тот, который гораздо более привлекателен, соответствует вашим потребностям и не требует библиотек или сложных последствий?

Теперь давайте попробуем следующий фрагмент кода

func sailAwayLabelAction(){ 

    // here creating a rectangle with certain dimensions you can easily manipulate 
    let rect = CGRect(origin: CGPoint(x: self.view.frame.size.width/2 - 150,y :self.view.frame.size.height-100), size: CGSize(width: 300, height: 35)) 


//here creating and manipulating the attributes of your text, i.e color,alignment etc.. 
let toastLabel = UILabel(frame: rect) 
toastLabel.backgroundColor = UIColor.orange 
toastLabel.textColor = UIColor.white 
toastLabel.textAlignment = NSTextAlignment.center; 
toastLabel.text = "This is my customized Toast !" 
toastLabel.layer.cornerRadius = 10; 
toastLabel.clipsToBounds = true 

//first pop the toast into our view 
self.view.addSubview(toastLabel) 

//then after 1 sec + 1 sec delay, animate the entire toastLabel out. 
UIView.animate(withDuration: 1, delay: 1, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: { 

    toastLabel.alpha = 0.0 

}) 



} 

Всякий раз, когда вы активируете предыдущую функцию, она должна оказать что-то похожее на это,

enter image description here

+0

очень хорошо, единственное, что я думаю, что сообщения с тостами обычно не предназначены для анимации во времени. Что-то должно вызвать его, например, если ваша сеть снова подключена или если ваш доступ к местоположению снова работает, и т. Д. – Honey

+0

уверен, почему нет, добавьте фоновый прослушиватель в appdelegate, чтобы контролировать доступность сети, когда сеть недоступна, сделайте ваши личные и настроенные тосты или даже анимации в моем случае. – Alexander