我试图在此回购邮件中显示的快餐栏消息的末尾运行一些代码: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 {
}
说实话,我不太了解方法语法足以使用它。
答案 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