代理操作永远不会被调用

时间:2011-10-27 05:22:22

标签: iphone objective-c delegates protocols

当我的模态视图被解除时,当我尝试从rootViewController中的UITableView重新加载数据时,我无法使用Protocols / Delegates。

以下是我的模态视图.h文件中的一些代码:

@protocol LoginWebViewDelegate <NSObject>
     -(void) updateFromModalView;
@end

@interface myModalView : UIViewController{
    id<LoginWebViewDelegate> loginDelegate; 
    ..
}
@property (nonatomic, assign) id<LoginWebViewDelegate> loginDelegate;
..
-(IBAction)dismiss;
..

在我的.m文件中,我合成了loginDelegate&amp;我实施了解雇行动&amp;当我按下按钮时它被激活。

-(IBAction) dismiss
{
    NSLog(@"Button Pressed!");
    [loginDelegate updateFromModalView];
}

接下来在我的rootViewController的界面中,我添加了<LoginWebViewDelegate>&amp;这是我实施中的行动:

-(void) updateFromModalView
{
    [modalView dismissModalViewControllerAnimated:YES];
    NSLog(@"Reloading Data");
    [dataController readPlist];
    [dataTable reloadData];
    [dataTable beginUpdates];
    [dataTable deleteSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:YES];
    [dataTable insertSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:YES];
    [dataTable endUpdates];
}

永远不会调用updateFromModalView方法。我错过了什么?

1 个答案:

答案 0 :(得分:1)

您缺少(或尚未发布)您为loginDelegate指定值的部分。你提到合成它但只创建存取方法,它没有设置值。

在代码中的某处,您需要一个如下声明:

self.loginDelegate = _something_;

或者,无论什么对象创建此视图控制器,在创建它之后但在呈现之前将自己或另一个对象设置为委托:

modalController = [[ModalController alloc] initWithNibName:@"ModalController];
modalController.loginDelegate = self;
[self presentModalViewController:modalController];