我需要提供一个模式视图控制器,并在它被取消或被通知我需要取消它时得到通知,看这里我仍然很困惑:
http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html#//apple_ref/doc/uid/TP40007457-CH111-SW14
我有我的mainViewController和myModalView控制器,我有以下代码需要实现,但不确定在哪里优先委托协议:
@protocol DataSyncDelegate <NSObject>
-(void) doneWithSync;
@end这个放在哪个控制器.h中?我假设我的modalViewController.h
第二个是我的实现:
-(void) doneWithSync {
[self dismissModalViewControllerAnimated:YES];
}这是放在哪个控制器中的?我假设我的mainViewController.m
我还有需要添加的委托属性:
id delegate;
@property (nonatomic, retain) id delegate;这个需要放入哪个controller.m er.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'发布于 2010-09-28 21:51:54
您的主视图控制器是委托,应该实现协议。您的modalView有一个委派,当它被解除时它会调用它。
https://stackoverflow.com/questions/3813406
复制相似问题