В принципе, у меня есть два 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!!!");
}
убедитесь себя. rightMeuViewController это не nill перед этой строкой self.rightMeuViewController.delegate = self; –
где rightMeuViewController intialise? – Aanabidden
проблема заключается в том, что вы не устанавливаете делегата self.rightMeuViewController.delegate = self; // это будет nil, , как открывается DiscoverTimelineTableViewController, он отображается в навигационной или модальной форме или на другой вкладке? –