IBAction代表

时间:2016-08-17 11:09:45

标签: ios objective-c uibutton

我的IBAction委托有问题。我通过Interface Builder在xib文件中创建按钮,并希望在另一个控制器中使用它。

按钮是可点击的,我没有看到任何错误,但它没有显示警报或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"];
}

1 个答案:

答案 0 :(得分:0)

您可以通过添加该按钮的目标在其他View控制器中执行 例如:在你的xib中有按钮。

将该按钮用作其他视图控制器中的目标。

示例: 首先在视图控制器

var letterVw     : LetterView?

letterVw.myFirstButton.addTarget(self, action: #selector(myClass.pressed(_:)), forControlEvents: .TouchUpInside)

大于

func pressed(sender: UIButton!) {

}