我正在尝试从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];
}
在控制台中我得到(null)
但是当我在下面的代码中检查时
- (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
答案 0 :(得分:1)
您的问题是,当您实例化MyView
时,您实际上是在创建一个新的(但不可见)版本的MyView视图控制器,而不是您原来的MyView
版本。有几种不同的方法可以解决这个问题,它实际上归结为最适合你的方法。
一个示例是订阅MyView
来自MySliderControl
的自定义通知,例如此...
MyView.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];
如果您不喜欢此设置,也可以使用委托方法。有很多关于创建自己的代表的教程。祝你好运!