【问题标题】:Delegate Action Never Gets Called委托操作永远不会被调用
【发布时间】:2011-10-27 05:22:21
【问题描述】:

当我的模态视图被关闭时,当我尝试从 rootViewController 中的 UITableView 重新加载数据时,我在使用协议/委托时遇到了问题。

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

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

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

在我的 .m 文件中,我合成了 loginDelegate 并实现了解除操作,当我按下按钮时它已被激活。

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

接下来在我的 rootViewController 的接口中我添加了&lt;LoginWebViewDelegate&gt; & 这里是我实现中的操作:

-(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 永远不会被调用。我错过了什么?

【问题讨论】:

    标签: iphone objective-c delegates protocols


    【解决方案1】:

    您缺少(或尚未发布)为loginDelegate 赋值的部分。您提到合成它,但只创建访问器方法,它没有设置值。

    在您的代码中的某处您需要如下语句:

    self.loginDelegate = _something_;
    

    或者,创建这个视图控制器的任何对象都会在创建它之后但在呈现它之前将它自己或另一个对象设置为委托:

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

    【讨论】:

      猜你喜欢
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多