【问题标题】:xcode - callback with UIButton Eventxcode - 使用 UIButton 事件回调
【发布时间】:2015-05-14 16:54:39
【问题描述】:

我有一个错误提示“EXEC_BAD_ACCESS”。我想在单击 UIButton 后运行回调。

这是我的代码:

Dialog.m

     - (void)showDialogInParentView: (UIView *)parentView
                          withText:(NSString *)text
                       leftBtnText:(NSString *)t1
                      rightBtnText:(NSString *)t2
                           handler:(void(^)(int))handler {

        vHandler = [handler copy];

        // INIT A CONTROL BUTTON WITH SELECTOR(EVENT) //
        _rightBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _rightBtn.frame = CGRectMake((self.altView.frame.size.width / 2), 1.0, (self.altView.frame.size.width / 2), self.altView.frame.size.height);
        _rightBtn.titleLabel.textColor = [UIColor whiteColor];
        [_rightBtn setTitle:@"Bla Bla" forState:UIControlStateNormal];

        [_rightBtn addTarget:self action:@selector(button_Click:) forControlEvents:UIControlEventTouchUpInside];

        // DO SOMETHINGS HERE //

}

- (void)button_Click: (UIButton *)sender {
    // CALLBACK HERE  WHEN CLICK THE BUTTON //
    vHandler(1);
}

这是我调用的代码:

Foo.m

-(void)showDialog {
    Dialog *d = [[Dialog alloc] init];
    [d showDialogInParentView:self.view
                                  withText:@"bla"
                               leftBtnText:@"bla bla"
                              rightBtnText:@"bla bla bla"
                                   handler:^(int res) {
                                       // DO SOMETHINGS //
                                   }];
}

当我在 *- (void)showDialogInParentView: (UIView *)parentView 中运行 vHandler 时,代码工作正常 withText:(NSString *)文本 leftBtnText:(NSString *)t1 rightBtnText:(NSString )t2 handler:(void(^)(int))handle 方法。但是我想在单击 UIButton 时运行 vHandler。

【问题讨论】:

    标签: xcode events callback uibutton


    【解决方案1】:

    我自己解决了这个问题。问题是在初始化对话框类之后'vHandler'总是为空。所以我使用了静态变量然后它已经解决了。

    Dialog.h

    + (void)showDialogInParentView: (UIView *)parentView withText:(NSString *)text
                       leftBtnText:(NSString *)t1
                      rightBtnText:(NSString *)t2
                           handler:(void(^)(int))handler;
    

    Foo.m

      static vHandler _handler;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      • 2018-05-25
      • 1970-01-01
      • 2015-08-08
      • 2011-07-31
      • 2011-09-04
      相关资源
      最近更新 更多