如何使用 MDCSnackbarMessage 完成处理程序?
How can I use the MDCSnackbarMessage completion handler?
我正在尝试 运行 在此存储库中显示的快餐栏消息末尾执行一些代码: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 {
}
老实说,我对方法语法的理解不够好,无法使用它。
我不知道它是否对你有帮助,但我最近使用这个库向用户显示 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 来初始化和显示任何带有 title/message 的 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
我从官方开发团队那里得到了丰富的信息和快速的回复。非常感谢 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];
}
Swift
MDCSnackbarManager.show(message)
message.completionHandler = {(_ userInitiated: Bool) -> Void in
print("Hello, world!")
}
我正在尝试 运行 在此存储库中显示的快餐栏消息末尾执行一些代码: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 {
}
老实说,我对方法语法的理解不够好,无法使用它。
我不知道它是否对你有帮助,但我最近使用这个库向用户显示 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 来初始化和显示任何带有 title/message 的 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
我从官方开发团队那里得到了丰富的信息和快速的回复。非常感谢 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];
}
Swift
MDCSnackbarManager.show(message)
message.completionHandler = {(_ userInitiated: Bool) -> Void in
print("Hello, world!")
}