2015-10-19 3 views
0

Я пытаюсь реализовать метод делегата для моей кнопки ... Я думаю, что все сделал правильно, но не понимаю, почему я не могу заставить его работать ... Моя кнопка не отвечает на какие-либо команды выглядит мертвым ... ...Метод делегата не работает

Моя кнопка расположена в ViewController «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' установить? Использование '@ synhesize' не было хорошей практикой на протяжении многих лет, оно не требуется, автоматически генерируется переменная экземпляра с добавленным подчеркиванием« _ ». Лучшая практика заключается не в том, чтобы использовать свойство iVars напрямую, а скорее с 'self.',' [self.delegate showPassw]; ' – zaph

+0

как вы вызываете viewCntoller B? как вы устанавливаете делегат? Вы используете метод performSegue? –

+0

Я удалил thesyntesize и принял self.delegate в качестве вашего предложения, но когда я пользуюсь кнопкой, все равно не получаю никаких действий. – kAiN

ответ

1

Вам нужно установить делегат в своем ViewController A

Предположим, у вас есть этот метод, который вызывает прямо перед отклоняя ViewController A:

-(void)dismissThisController{ 

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

[self dismissViewControllerAnimated:YES completion:^{ 

}]; 
} 

и в вашем View Controller B, у вас есть этот метод делегата:

+0

I понять, как вы описали, и я думаю, что это тот самый, который я использовал в своем коде? Все, что вам нужно сделать, кнопка, которая находится в viewController B, находится в коде viewController A viewController A = код, который должен быть выполнен viewController B = где кнопка – kAiN

+0

, можете ли вы рассказать мне, как вы представляете контроллер просмотра B? –

+0

Я имею в виду, как вы переходите от A к B? –

Смежные вопросы