2015-10-19 389 views
0

我想爲我的按鈕實現一個委託方法...我想我做的一切正確,但不明白爲什麼我不能使它工作...我的按鈕不響應任何命令看起來死了......委託方法不工作

我的按鈕位於視圖控制器「B」,它必須執行位於ViewController中「A」

這是我的代碼功能

viewControllerB.h

@protocol UNI_TableLoginDelegate <NSObject> 
-(void)showPassw; 

@end 

@interface viewControllerB : UITableViewController 
@property (nonatomic, weak) id <UNI_TableLoginDelegate> delegate; 
@end 

viewControllerB.m(這裏我通過連接我的故事板的操作按鈕)

@implementation viewControllerB 
@synthesize delegate; 


- (void)viewDidLoad { 
    [super viewDidLoad]; 

} 
- (IBAction)showReset:(id)sender { 
    [delegate showPassw];  
} 

viewControllerA.m

#import "viewControllerB.h" 

    @interface viewControllerA() <UNI_TableLoginDelegate> 

    - (void)viewDidLoad { 
     [super viewDidLoad]; 

     viewControllerB *tableLogin = [[viewControllerB alloc] init]; 
     tableLogin.delegate = self; 

    } 

    //Delegate Method 
    -(void)showPassw { 

     if (containerTable.frame.origin.y == 56) { 
      NSLog(@"ssss"); 
     } 

     else { 
      NSLog(@"hdhdh"); 
     } 
    } 
+0

哪裏的'價值delegate'設置?使用'@ synthesize'多年來一直不是很好的做法,它不是必需的,帶有下劃線「_」的實例變量將自動生成。最佳做法是不直接使用屬性iVars,而是使用'self.','[self.delegate showPassw];' – zaph

+0

你怎樣調用viewCntoller B?你如何設置代表?你在使用performSegue方法嗎? –

+0

我刪除了thesyntesize並採用self.delegate作爲你的建議,但是當我使用按鈕仍然沒有得到任何動作 – kAiN

回答

1

您需要設置委託在你的ViewController一個

假設你有這種方法,駁回的ViewController答:

-(void)dismissThisController{ 

// you need to set the delegate value 
[self.delegate yourDelegateMethod:withValueYouWantToSend]; 

[self dismissViewControllerAnimated:YES completion:^{ 

}]; 
} 

,並在您的視圖控制器B,你有這樣的委託方法:

+0

我理解你描述的方式,我認爲它與我在代碼中使用的是一樣的嗎?所有你必須做的按鈕,它位於viewController B,是在viewController代碼A viewController A =要執行的代碼 viewController B =哪裏是按鈕 – kAiN

+0

你能告訴我你是如何呈現查看控制器B? –

+0

我的意思是,你如何從A航行到B? –