委托方法未被触发 - iOS
问题描述:
我有一个tabcontroller,它有两个段。其中之一是UserInfo,另一个是UserAvatar。一旦用户放入他的信息,然后点击完成按钮,并进入主视图,或用户也可以选择他的个人资料头像,然后点击单击按钮,然后可以去mainView。然而,尽管我使用调试模式运行代码,但它运行到完成按钮,但在我的用户信息视图中,delegeta方法未被触发!委托方法未被触发 - iOS
在我的主头文件,我宣布我的协议如下:
@protocol MyUserInfoAvatarViewControllerDelegate <NSObject>
@required
-(void)userInfoEditingDone:(id)sender;
@end
@protocol MyUserInfoSettingsViewControllerDelegate <NSObject>
@required
-(void)userInfoEditingDone:(id)sender;
@end
在我的main.m文件
,我委托方法
- (void)userInfoEditingDone:(id)sender {
NSLog(@"Hello");
}
MyUserInfoAvatarViewController.h
#import <UIKit/UIKit.h>
#import "NEATMainViewController.h"
@interface UserInfoAvatarViewController : UIViewController <ThumbImageViewDelegate > {
id __unsafe_unretained flipDelegate;
}
@property (nonatomic,unsafe_unretained) id <MyUserInfoAvatarViewControllerDelegate>
flipDelegate; 在下面的MyUserInfoAvatarViewController.m
响应- (IBAction)doneButtonPressed:(id)sender {
// Tell the root view to flip back over to the main view
[self.flipDelegate userInfoEditingDone:self];
}
MyUserInfoSettingsViewController.h
在以下不叫我的委托方法.. MyUserInfoSettingsViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *btn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleBordered target:self action:@selector(done:)];
self.navigationItem.rightBarButtonItem = btn;
}
- (void)done:(id)sender {
// Tell the root view to flip back over to the main view
[self.flipDelegate userInfoEditingDone:self];
}
答
这是因为你flipDelegate
是nil
和更多的你已经定义代理方法main.m
,我认为它没有任何实现你的协议的类。
答
检查是你错过了。应该喜欢这样的例子说WeatherAPI
类:
@protocol WeatherAPIDelegate <NSObject>
-(void)weatherData:(NSMutableDictionary *)dictData;
@end
@interface WeatherAPI : NSObject
{
id <WeatherAPIDelegate>delegate;
}
@property(nonatomic,strong)id <WeatherAPIDelegate> delegate;
@end
呼叫delegate
方法像这样WeatherAPI
:
[delegate weatherData:dictWeatherInfo];
中说ViewController
现在执行:
@interface ViewController : UIViewController<WeatherAPIDelegate>
{
}
在ViewController
实现WeatherAPIDelegate
方法:
#pragma mark -
#pragma mark WeatherAPIDelegate Method
-(void)weatherData:(NSMutableDictionary *)dictData
{
}
当intializing在ViewController
WeatherAPI *objWeatherAPI = [[WeatherAPI alloc]init];
[objWeatherAPI setDelegate:self];
WeatherAPI
您如何设置委托? – 2013-05-09 04:12:42你在哪里设置委托和你在哪里定义它? – Mani 2013-05-09 04:13:49
你能否让它更清楚? – casillas 2013-05-09 04:13:53