Android 在 iOS 的"toast": 向邮件中添加按钮

标签: Xcode ios UIButton
发布时间: 2017/3/28 21:20:02
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有为 ToastView (类似于安卓的toast),在屏幕的底部显示消息栏创建一个 iOS 类。 我添加一个按钮到 ToastView,并解决了我原来的错误。NSLog 为触摸按钮显示在控制台中,但我需要发送一个 BOOL 值回 HomeViewController,当单击该按钮时,不知道如何与此按钮两人之间进行通信。 任何帮助吗?

在 ToastView.h:

+ (void)showToastInParentView: (UIView *)parentView withText:(NSString *)text withDuaration:(float)duration;
+ (void)undoButtonClicked:(id)sender;

在 ToastView.m:

//shows the "toast" message
+ (void)showToastInParentView: (UIView *)parentView withText:(NSString *)text withDuaration:(float)duration {
//code to show message
UIButton *undoButton = [[UIButton alloc] initWithFrame:CGRectMake(toast.frame.size.width - 60.0, toast.frame.size.height - 35.0, 40, 20)];
undoButton.backgroundColor = [UIColor lightGrayColor];
[undoButton addTarget:self action:@selector(undoButtonClicked:) forControlEvents:UIControlEventTouchDown];
}

+(void) undoButtonClicked:(id)sender {
NSLog(@"UNDO BUTTON TOUCHED");
}

然后我在我 HomeViewController 中调用 ToastView 用下面的代码︰

[ToastView showToastInParentView:self.view withText:@"TOAST MESSAGE!" withDuaration:5.0];

解决方法 1:

看到你更新的代码,问题来自 undoButtonClicked: 方法,它在你的案子是一个类方法 (带有前缀"+")。

你想要一个对象的方法通过更改前缀与"-"。这样,类就知道了,在此类的实例化的对象上调用。当您使用 addTarget:action:forControlEvents: ,行动是一个选择器,你的目标。

作为苹果

选择器是用来选择要执行的对象的方法的名称

所以它需要对象的方法,不是一个类的方法。

你的代码看起来应该像这样︰

。 h:。

+ (void)showToastInParentView: (UIView *)parentView withText:(NSString *)text withDuaration:(float)duration;
- (void)undoButtonClicked:(id)sender;

。 m:。

//shows the "toast" message
+ (void)showToastInParentView: (UIView *)parentView withText:(NSString *)text withDuaration:(float)duration {
    //code to show message
    UIButton *undoButton = [[UIButton alloc] initWithFrame:CGRectMake(toast.frame.size.width - 60.0, toast.frame.size.height - 35.0, 40, 20)];
    undoButton.backgroundColor = [UIColor lightGrayColor];
    [undoButton addTarget:self action:@selector(undoButtonClicked:) forControlEvents:UIControlEventTouchDown];
}

-(void) undoButtonClicked:(id)sender {
    NSLog(@"UNDO BUTTON TOUCHED");
}
赞助商