[英]Delegate method is not fired- iOS
我有一个tabcontroller,它有两个部分。 其中一个是UserInfo,另一个是UserAvatar。 一旦用户输入了自己的信息,然后单击“完成”按钮进入主视图,或者用户也可以选择其个人资料头像,然后单击“单击”按钮然后进入主视图。 但是,尽管我以调试模式通过代码运行,但是它运行到完成按钮中,但是在我的userinfo视图中,不会触发delegeta方法!
在我的主头文件中,我声明我的协议如下:
@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
#import <UIKit/UIKit.h>
#import "NEATMainViewController.h"
@interface UserInfoSettingsViewController : UIViewController {
id __unsafe_unretained flipDelegate;
}
@property (nonatomic,unsafe_unretained) id <MyUserInfoSettingsViewControllerDelegate> flipDelegate;
在下面不调用我的委托方法。.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
class:
@protocol WeatherAPIDelegate <NSObject>
-(void)weatherData:(NSMutableDictionary *)dictData;
@end
@interface WeatherAPI : NSObject
{
id <WeatherAPIDelegate>delegate;
}
@property(nonatomic,strong)id <WeatherAPIDelegate> delegate;
@end
在WeatherAPI
调用这样的delegate
方法:
[delegate weatherData:dictWeatherInfo];
现在在说ViewController
实现:
@interface ViewController : UIViewController<WeatherAPIDelegate>
{
}
在ViewController
实现WeatherAPIDelegate
方法:
#pragma mark -
#pragma mark WeatherAPIDelegate Method
-(void)weatherData:(NSMutableDictionary *)dictData
{
}
在ViewController
初始化WeatherAPI
时
WeatherAPI *objWeatherAPI = [[WeatherAPI alloc]init];
[objWeatherAPI setDelegate:self];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.