2015-05-21 4 views
0

В принципе, у меня есть два UIViewControllers, в одном из них есть несколько кнопок. Как только пользователь коснется кнопки в одном из контроллеров просмотра, я хочу вызвать некоторые действия в другом контроллере представления. Но, похоже, это не работает. В принципе, «если» условие, которое:Делегат iOS не работает

if (self.delegate && [self.delegate respondsToSelector:@selector(userDidTouchButtons:)]) 
     { 
      [self.delegate userDidTouchButtons:self]; 
     } 

, кажется, не работает, потому что [self.delegate respondToSelector] всегда ложно.

Это файл .h первого контроллера представления, в котором есть несколько кнопок. #import

@class RightSideMenuViewController; 

@protocol RightSideMenuDelegate <NSObject> 

- (void) userDidTouchButtons: (RightSideMenuViewController *) rightMenuViewController; 

@end 

@interface RightSideMenuViewController : UIViewController 

@property (nonatomic, assign) id <RightSideMenuDelegate> delegate; 

@end 

Это .m файл первого контроллера представления.

- (IBAction)badmintonClicked:(UIButton *)sender 
{ 
    if (self.delegate && [self.delegate respondsToSelector:@selector(userDidTouchButtons:)]) 
    { 
     [self.delegate userDidTouchButtons:self]; 
    } 
} 

Это .m файл второго контроллера представления, где я хочу, чтобы вызвать действие здесь, в соответствии с кнопками в первом контроллере представления.

#import "RightSideMenuViewController.h" 

@interface DiscoverTimelineTableViewController() <RightSideMenuDelegate> 
@property (strong, nonatomic) RightSideMenuViewController *rightMeuViewController; 
@end 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.rightMeuViewController.delegate = self; 
} 

#pragma mark - RIGHT MENU Delegate methods 
- (void) userDidTouchButtons: (RightSideMenuViewController *) rightMenuViewController 
{ 
    NSLog(@"He touches me!!!"); 
} 
+1

убедитесь себя. rightMeuViewController это не nill перед этой строкой self.rightMeuViewController.delegate = self; –

+0

где rightMeuViewController intialise? – Aanabidden

+0

проблема заключается в том, что вы не устанавливаете делегата self.rightMeuViewController.delegate = self; // это будет nil, , как открывается DiscoverTimelineTableViewController, он отображается в навигационной или модальной форме или на другой вкладке? –

ответ

0

Убедитесь, что delegate правильно установлен, т.е. self.rightMeuViewController не должен быть нулевым

кажется, что вы не устанавливая rightMeuViewController свойство во время навигации по второму зрения контроллера

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