iOS 委托不工作
Posted
技术标签:
【中文标题】iOS 委托不工作【英文标题】:iOS Delegate Not Working 【发布时间】:2015-05-21 10:35:47 【问题描述】:基本上,我有两个 UIViewController,其中一个中有一些按钮。一旦用户触摸其中一个视图控制器中的按钮,我想在另一个视图控制器中触发一些操作。但它似乎无法以某种方式工作。基本上,“如果”条件是:
if (self.delegate && [self.delegate respondsToSelector:@selector(userDidTouchButtons:)])
[self.delegate userDidTouchButtons:self];
似乎不起作用,因为 [self.delegate respondToSelector]
总是错误的。
这是第一个视图控制器的 .h 文件,它有一些按钮。 #导入
@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!!!");
【问题讨论】:
确保 self.rightMeuViewController this 在此行之前不为零 self.rightMeuViewController.delegate = self; rightMeuViewController 在哪里初始化? 问题是你没有设置委托 self.rightMeuViewController.delegate = self;// 这将是 nil, , DiscoverTimelineTableViewController 是如何出现的,它是在导航或模态中呈现还是另一个选项卡?跨度> @RaheelSadiq 其实我是用“SWRevealViewController”这个库来做侧边菜单的,而rightMenuViewController就是右边的侧边菜单。 【参考方案1】:确保delegate
设置正确,即self.rightMeuViewController
不应为nil
您在导航到第二个视图控制器时似乎没有设置 rightMeuViewController
属性
【讨论】:
以上是关于iOS 委托不工作的主要内容,如果未能解决你的问题,请参考以下文章