0

我正在尝试从 MySliderController.m 重新加载 MyView.m 表,但它没有重新加载。我在 MyView.m 中声明了以下方法

 -(void)updateData{
      [self.itablview reloadData];
 }

并通过以下代码从 MySliderController.m 类中调用该方法

 DDMenuController *menuController = (DDMenuController*)((AppDelegate*)[[UIApplication sharedApplication] delegate]).DDmenuController;
MyView *obj = [[MyView alloc]init];

if(indexPath.row == 3){
    [menuController showRootController:YES];
    [obj updateData];
}

该方法被调用,但即使我通过下面的代码检查 tableview 的存在,表格也没有重新加载

-(void)reloadtable:(id) sender{
    NSlog(@"%@",self.itableview)
    [self.itableView reloadData];
}

在控制台中我得到(空)

但是当我检查下面的代码时

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"%@", self.itableView);
}

我收到以下消息。这意味着表存在

2013-06-29 19:31:48.673 slidingViews[7025:c07] <UITableView: 0x79d9400; frame = (0 0; 320 480); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x714e940>; layer = <CALayer: 0x714e3f0>; contentOffset: {0, 0}>

what can be the issue. Please check my code here 
https://github.com/kanwarpalSingh/mycode
4

1 回答 1

1

您的问题是,当您实例化时,MyView您实际上是在创建 MyView 视图控制器的新(但不可见)版本,而不是原始版本MyView。有几种不同的方法可以处理这个问题,这真的归结为最适合你的方法。

一个示例是订阅MyView源自MySliderControl诸如此类的自定义通知...

我的视图.m

- (void)viewDidLoad
{
 [[NSNotificationCenter defaultCenter] removeObserver:self];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateData:) name:@"updateDataOnMyView" object:nil];
}

MySliderControl.m

[[NSNotificationCenter defaultCenter] postNotificationName:@"updateDataOnMyView" object:nil];

如果您不喜欢此设置,也可以使用委托方法。还有很多关于创建自己的委托的教程。祝你好运!

于 2013-06-29T15:16:05.807 回答