IBAction委托人
问题描述:
我有一个IBAction委托问题。我通过Interface Builder在xib文件中创建按钮,并希望在另一个控制器中使用它。IBAction委托人
按钮是可点击的,我没有看到任何错误,但没有显示Alert或NSLog。如果我试图在LetterView.m中做NSLog,它工作得很好,但不在ViewController中。我该怎么办?
感谢您的帮助。
我在做什么目前是:
LetterView.h
#import <UIKit/UIKit.h>
@class LettersView;
@protocol ButtonHint <NSObject>
-(void)hintButtonView:(LettersView*)letterView;
@end
@interface LettersView : UIView @property (strong, nonatomic) IBOutlet UIView *lettersView;
- (IBAction)hintButton:(id)sender;
- (IBAction)removeButton:(id)sender;
@property (nonatomic, assign) id <ButtonHint> hintDelegate;
@end
LetterView.m
-(IBAction)hintButton:(id)sender {
[self.hintDelegate hintButtonView:self];
}
ViewController.h
@interface GameViewController : UIViewController <ButtonDisplayChar, ButtonHint>
ViewController.m
-(void)hintButtonView:(LettersView *)letterView {
NSLog(@"DSfdfsadasda");
[self addAlert:@"HINT" andMessage:helpstr andButton:@"Thanks"];
}
答
您可以通过添加按钮 例子的目标在其他浏览器做的事:在你的厦门国际银行有按钮。
在其他视图控制器中使用该按钮作为目标。
例如: 先在
var letterVw : LetterView?
letterVw.myFirstButton.addTarget(self, action: #selector(myClass.pressed(_:)), forControlEvents: .TouchUpInside)
比
func pressed(sender: UIButton!) {
}
是否指定hintDelegate视图控制器? –
我应该在哪里做? –
在视图控制器中,您需要设置'yourLetterViewObject.hintDelegate = self;' –