【发布时间】:2010-09-28 23:29:22
【问题描述】:
我需要呈现一个模态视图控制器,并在它被解除或通知我需要解除它时得到通知,看这里我仍然很困惑:
我有我的 mainViewController 和 myModalView 控制器,我有以下代码需要实现但不确定在哪里 - 首先是委托协议:
@protocol DataSyncDelegate <NSObject>
-(void) doneWithSync;
@end
这进入了哪个controller.h?我假设我的 modalViewController.h
第二个是我的实现:
-(void) doneWithSync {
[self dismissModalViewControllerAnimated:YES];
}
这是进入哪个controller.m?我假设我的 mainViewController.m
我还有需要添加的委托属性:
id delegate;
@property (nonatomic, retain) id delegate;
这需要进入哪个controller.m?我假设我的 modalViewController.h
下面是我从 MainViewController 中展示 modalViewController 的方式:
DataSyncViewController *dataSyncViewController = [[DataSyncViewController alloc] initWithOptions:FALSE];
dataSyncViewController.delegate = self;
[self presentModalViewController:dataSyncViewController animated:NO];
[dataSyncViewController release];
截至目前,这给了我以下错误:
-[DataSyncViewController setDelegate:]: unrecognized selector sent to instance 0x5952e20
我在这里错过了什么?
编辑 - 这是我的模态视图控制器。H
#import <UIKit/UIKit.h>
@protocol DataSyncDelegate
-(void) doneWithSync;
@end
@interface DataSyncViewController : UIViewController {
id <DataSyncDelegate> delegate;
}
@property (nonatomic, retain) id <DataSyncDelegate> delegate;
@end
编辑 - 主视图控制器 .H 和 .M
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "DataSyncViewController.h"
@interface LoginViewController : UIViewController <DataSyncDelegate>{
}
@end
这里是模式的创建:
DataSyncViewController *dataSyncViewController = [[DataSyncViewController alloc] initWithOptions:FALSE];
dataSyncViewController.delegate = self;
[self presentModalViewController:dataSyncViewController animated:NO];
[dataSyncViewController release];
这是我对代表的实现:
-(void) doneWithSync {
[self dismissModalViewControllerAnimated:YES];
}
现在一切看起来都在编译器中正确连接,但我收到以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[DataSyncViewController setDelegate:]: unrecognized selector sent to instance 0x59e4b40'
【问题讨论】:
-
也发布你的 mainViewController :)
-
不应该是@interface LoginViewController : UIViewController
而不是DataSyncComplete? -
抱歉,我在尝试不同的东西时切换了名称 - 它们正确匹配
-
我忘记合成代表了!!!很抱歉我浪费了你这么多时间!
-
大声笑我本来想问的,但我从来没有问过。也是我的错。没问题,很乐意提供帮助,只是希望我真的问过这个问题!!! :)
标签: iphone objective-c ipad