我在代碼中嘗試了很多自定義委託示例,以便將數據從視圖B發回到父視圖A.爲什麼我會得到NULL?應該有我缺少的東西。請幫忙。我怎麼能調用setupDate在父視圖中接收(NSDate *)setAlarmDate?iOS7通過協議在導航控制器推送視圖設置向後傳遞數據
父視圖
#import "SetupViewController.h"
@interface ViewController : UIViewController <SetupViewControllerDelegate> {
NSTimer *timer;
}
@end
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"setupview"]) {
NSLog(@"prepare for segue");
SetupViewController *svc = [[SetupViewController alloc] init];
svc.delegate = self;
-(void)setupDate:(NSDate *)setAlarmDate{
NSLog(@"Hey Hey");
NSLog(@"%@", setAlarmDate);
}
@end
視圖B
@protocol SetupViewControllerDelegate <NSObject>
@required
-(void)setupDate:(NSDate *)setAlarmDate;
@end
@interface SetupViewController : UIViewController
@property (nonatomic, strong) id <SetupViewControllerDelegate> delegate;
//IB
@property (weak, nonatomic) IBOutlet UIDatePicker *pDatePicker;
@end
.M
#import "SetupViewController.h"
#import "ViewController.h"
@implementation SetupViewController
-(void)viewWillDisappear:(BOOL)animated{
NSDate *date = [self.pDatePicker date];
[[self delegate] setupDate:date];
}
@end
in viewWillDisappear:動畫你的代表是零?而且任何代表都應該具有弱的屬性。你還應該檢查你的委託響應選擇器是否可能導致崩潰 – Neru
@Neru使它變弱。謝謝。 – nelm