如何使用MDCSnackbarMessage完成处理程序?

时间:2018-02-16 13:49:05

标签: swift material-components-ios

我试图在此回购邮件中显示的快餐栏消息的末尾运行一些代码:https://github.com/material-components/

但我真的不了解足以实现它的方法的语法。具体来说:https://github.com/material-components/material-components-ios/blob/develop/components/Snackbar/src/MDCSnackbarMessage.h#L125

@property(nonatomic, copy, nullable) MDCSnackbarMessageCompletionHandler completionHandler;

// I've tried a'lot of different ways but nothing works:

let message = MDCSnackbarMessage()

message.completionHandler (success: Bool?) -> Void in do {

}

message.completionHandler = true in {

}

说实话,我不太了解方法语法足以使用它。

2 个答案:

答案 0 :(得分:1)

我从官方开发团队得到了很好的信息和快速反应。向romoore致敬,感谢您的帮助。

ObjC

- (void)showSimpleSnackbar:(id)sender {
  MDCSnackbarMessage *message = [[MDCSnackbarMessage alloc] init];
  message.text = @"Snackbar Message";

  // Added this assignment to demonstrate completion blocks.
  message.completionHandler = ^(BOOL userInitiated) {
  NSLog(@"Hello, world!");
 };

 [MDCSnackbarManager showMessage:message];
}

夫特

MDCSnackbarManager.show(message)
message.completionHandler = {(_ userInitiated: Bool) -> Void in
    print("Hello, world!")
}

答案 1 :(得分:0)

我不知道它是否会对您有所帮助,但我最近使用此库向用户显示SnackBar

它非常易于使用和实施。

您可以安装pod并立即尝试使用以下示例代码:

let snack = LPSnackbar(title: "Hello SnackBar", buttonTitle: "Cancel")

snack.height = 60

// Customize the snack
snack.bottomSpacing = 80
snack.view.titleLabel.font = UIFont.systemFont(ofSize: 20)

// Show a snack to allow user to undo deletion
snack.show(animated: true) { (undone) in
      if undone {
         // Undo deletion, handle action to revert back    
      } else {
         // Follow through with deletion
      }
}

编辑您可能希望使用Utils Class来初始化并显示任何带有所需标题/消息的SnackBar,并处理回调中的操作。

它会更清洁。希望它会对你有所帮助。

编辑2:我查看了您的库,我找到了解释如何使用不同选项实现SnackBar的示例。

这是在没有任何用户操作的情况下显示简单消息:

let message = MDCSnackbarMessage()
message.text = "Tesla is going to Mars"
MDCSnackbarManager.show(message)

这是带有操作的消息(你不理解的处理程序):

let action = MDCSnackbarMessageAction()
let actionHandler = {() in
  let answerMessage = MDCSnackbarMessage()
  answerMessage.text = "Fascinating"
  MDCSnackbarManager.show(answerMessage)
}
action.handler = actionHandler
action.title = "OK"
message.action = action