委派和模态视图控制器
问题描述:
根据视图控制器编程指南,委派是解除模态视图的首选方法。委派和模态视图控制器
继苹果自己的食谱举例来说,我已实行以下,但不断收到警告,该addNameController:didAddName
方法没有找到......
NameDelegate.h
@protocol NameDelegate
- (void)addNameController:(AddName *)addNameController didAddName:(NSString *)name;
@end
AddName.h
@interface AddName : UIViewController {
UITextField *nameField;
id delegate;
}
- (IBAction)doneAction;
- (id)delegate;
- (void)setDelegate:(id)newDelegate;
@property (nonatomic, retain) IBOutlet UITextField *nameField;
@end
AddName.m
- (IBAction)doneAction {
[delegate addNameController:self didAddName:[nameField text]];
}
- (id)delegate {
return delegate;
}
- (void)setDelegate:(id)newDelegate {
delegate = newDelegate;
}
ItemViewController.h
#import "NameDelegate.h"
@interface ItemViewController : UITableViewController <NameDelegate>{
}
@end
ItemViewController.m
- (void)addItem:(id)sender {
AddName *addName = [[AddName alloc] init];
addName.delegate = self;
[self presentModalViewController:addName animated:YES];
}
- (void)addNameController:(AddName *)addNameController didAddName:(NSString *)name {
//Do other checks before dismiss...
[self dismissModalViewControllerAnimated:YES];
}
我认为所有需要的元素有没有在正确的地方?
感谢
答
您还没有指定的AddName
的delegate
酒店以符合NameDelegate
协议。
使用此代码AddName.h:
#import "NameDelegate.h"
@interface AddName : UIViewController {
UITextField *nameField;
id <NameDelegate> delegate;
}
@property(nonatomic, retain) IBOutlet UITextField *nameField;
@property(nonatomic, assign) id <NameDelegate> delegate;
- (IBAction)doneAction;
@end
谢谢...我不得不@class AddName添加到NameDelegate以及:) – joec 2010-10-12 18:26:44