2016-08-17 5 views
0

Ich habe ein Problem mit IBAction Delegaten. Ich erstelle Button in XIB-Datei von Interface Builder und möchte es in einem anderen Controller verwenden.IBAction Delegat

Schaltfläche ist anklickbar und ich sehe keinen Fehler, aber es zeigt weder Alert noch NSLog an. Wenn ich versuche, NSLog in LetterView.m zu tun, funktioniert es vollkommen in Ordnung, aber nicht in ViewController. Was soll ich machen?

Danke für Hilfe.

Was ich tue, ist derzeit:

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"]; 
} 
+0

Haben Sie hintDelegate zuordnen? –

+0

Wo soll ich es machen? –

+2

Im View-Controller müssen Sie 'yourLetterViewObject.hintDelegate = self;' –

Antwort

0

Sie können durch Hinzufügen Ziel dieser Knopf Beispiel in anderen View-Controller tun: in Ihre xib haben Taste.

Verwenden Sie diese Schaltfläche als Ziel in anderen View-Controller.

Beispiel: zuerst im View-Controller

var letterVw  : LetterView? 

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

als

func pressed(sender: UIButton!) { 

}