簡體   English   中英

代表方法未觸發-iOS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM