2016-10-05 7 views
0

CosmicMind/Materialライブラリでは、どのようにスナックバーを開始(表示)しますか?CosmicMind/Material SnackbarControllerでは、どのようにスナックバーを開始(表示)しますか?

私はsnackbarControllerを準備して、ユーザーがボタンをクリックするたびにそれを表示しようとしました。

その例に示すように:

private var undoButton: FlatButton! 

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    prepareSnackbar() 
    animateSnackbar() 
} 

@IBAction func loginBtnTapped(_ sender: AnyObject) { 
    sc?.show(vc: UIViewControlle, sender: Any)//doesn't show 
    more code... (which works) 
} 
private func prepareUndoButton() { 
    undoButton = FlatButton(title: "Undo", titleColor: Color.yellow.base) 
    undoButton.pulseAnimation = .backing 
    undoButton.titleLabel?.font = RobotoFont.regular(with: 14) 
} 

private func prepareSnackbar() { 
    guard let sc = snackbarController else { 
     return 
    } 
    sc.snackbar.text = "Reminder saved." 
    sc.snackbar.rightViews = [undoButton] 

} 

private func animateSnackbar() { 
    guard let sc = snackbarController else { 
     return 
    } 
    _ = sc.animate(snackbar: .visible, delay: 1) 
    _ = sc.animate(snackbar: .hidden, delay: 4) 
} 

だから私は空のプロジェクトでそれを試してみたのとスナックバーがまだ動作しません。私が間違っていることを指摘していただけますか?

import Foundation 
import UIKit 
import Material 

class MainViewController: UIViewController { 

private var undoButton: FlatButton! 


open override func viewDidLoad() { 
    super.viewDidLoad() 
    view.backgroundColor = Color.red.accent1 

    prepareUndoButton() 
} 

open override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    //prepareSnackbar() 
    //animateSnackbar() 
} 

private func prepareUndoButton() { 
    undoButton = FlatButton(title: "Undo", titleColor: Color.yellow.base) 
    undoButton.pulseAnimation = .backing 
    undoButton.titleLabel?.font = RobotoFont.regular(with: 14) 
} 

private func prepareSnackbar() { 
    guard let sc = snackbarController else { 
     return 
    } 

    sc.snackbar.text = "Reminder saved." 
    sc.snackbar.rightViews = [undoButton] 
} 

private func animateSnackbar() { 
    guard let sc = snackbarController else { 
     return 
    } 

    _ = sc.animate(snackbar: .visible, delay: 1) 
    _ = sc.animate(snackbar: .hidden, delay: 4) 
} 


@IBAction func testBtn(_ sender: AnyObject) { 
    print("TEST TEST TEST") 

    prepareSnackbar() 
    animateSnackbar() 
} 
} 

答えて

1

あなたはviewDidAppear機能に気付いた場合、あなたは基本的にそうように、あなたのボタンハンドラにanimateSnackbar機能を使用することができます

_ = sc.animate(snackbar: .visible, delay: 1) 
_ = sc.animate(snackbar: .hidden, delay: 4) 

ラインを呼び出すanimateSnackbar呼び出し、持っている:

@IBAction func loginBtnTapped(_ sender: AnyObject) { 
    animateSnackbar() 
} 

それだけです。 2つのアニメーションが再生され、1つは表示され、もう1つはスナックバーを非表示にします。あなたがそれらを表示し、自動的に非表示にしたい遅延を設定します。

animateSnackbarコールはviewDidAppearメソッドから削除することをお勧めします(例の場合)。

+1

私のVCではまだ動作しません。おそらく空のプロジェクトを試して、そこから作業してください。ありがとうございました –

+0

例を更新しました。おそらくそれはあなたを助けるでしょう:[Snackbar Example](https://github.com/CosmicMind/Material/tree/master/Examples/Programmatic/SnackbarController) – CosmicMind

+1

まだ問題があるようです私のsnackbarで - それは表示されません、ビューまたは何かの外のように見えます... –

関連する問題