1

我试图在此 repo 显示的小吃栏消息的末尾运行一些代码: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 {

}

老实说,我对方法语法的理解不够好,无法使用它。

4

2 回答 2

2

我得到了来自官方开发团队的信息丰富且快速的回复。非常感谢 romore的帮助。

对象

- (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!")
}
于 2018-02-16T14:34:30.553 回答
-1

我不知道它是否会对你有所帮助,但我最近使用这个库向用户显示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 类来初始化和显示任何带有您想要的标题/消息的 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
于 2018-02-16T14:08:18.103 回答