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 委托不工作的主要内容,如果未能解决你的问题,请参考以下文章

ios-Facebook 登录委托方法不起作用

iOS 的简单委托示例不起作用

iOS 委托和单例模式

NSTableView 委托不工作/不填充单元格

iOS 委托代理与协议(Delegate and Protocol)

iOS 核心数据应用程序委托?