自定义委托为空iOS
问题描述:
我知道这应该是一个简单的事情来解决,但我不明白发生了什么问题。可能是额外的对将有所帮助。这是我想要做的。自定义委托为空iOS
- 在我的表格视图控制器中,导航控制器上有一个(+)按钮用于添加新项目。
- 我有一个模式segue,把它带到下一个视图控制器。用户填写表格并点击保存表格视图控制器重新加载新添加的记录。
为此,我使用委托实现了协议。
MyFormViewController.h
protocol MyCustomDelegate <NSObject>
@required
- (void)addNewRecord:(myFormViewController *)formViewController itemToAdd:(Item *)item;
@end
@property (nonatomic,weak) id<MyCustomDelegate> delegate;
MyFormViewController.m
@synthesize delegate;
- (IBAction)addItem:(id)sender {
Item *item = [[Item alloc]init];
item.name = itemName.text;
item.desc = itemDescription.text;
// I am having problem here, self.delegate is being null even though, it's being set in prepareForSegue.
if ([self.delegate respondsToSelector:@selector(addNewRecord:)]) {
[self.delegate addNewRecord:self itemToAdd:item];
}
else{
// delegate is getting set to null for some reason.
NSLog(@"Delegate method not getting called...%@",delegate);
}
}
在MyTableViewController.h
@interface MyTableViewController:的UITableViewController
MyTableViewController.m
-(void)addItem:(myFormViewController *)formViewController itemToAdd:(Item *)item{
if(item)
{
MyClass *_itemClass = [[MyClass alloc]initWithPath:@"items/"];
[_itemClass addItemForUser:item];
}
[formViewController dismissViewControllerAnimated:YES completion:nil];
}
在我prepareForSegue方法,我设置我的tableviewcontroller为代表。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"addItemSegue"]){
myFormViewController *_showaddTopic = [[myFormViewController alloc]init];
_showaddTopic.delegate = self;
}
毕竟,我在myFormViewController中的委托被设置为“null”。我不知道为什么它不起作用。这是非常基本的东西,但给我很难。
谢谢
答
myFormViewController *_showaddTopic = [[myFormViewController alloc]init];
_showaddTopic.delegate = self;
有你的问题。你是创建 a 新 MyFormViewController。但这是错误的MyFormViewController;你想使用的是已经是的segue的目标控制器。所以你设置了错误的对象的委托。
(PS注意我用一个大写字母开始一类的名字总是这样?)
答
也许_showaddTopic.delegate =自我;不能写在这里并立即将此对象分配为
谢谢你的回应。它的工作,它解决了问题,并给了我另一个。我的[self.delegate respondsToSelector:@selector(addNewRecord :)]一直返回NO。你明白为什么? – Harish 2013-04-22 01:53:42
是的,我喜欢。询问一个单独的问题,并给我它的链接。 – matt 2013-04-22 02:51:55