2013-06-29 62 views
0

我想從MySliderController.m重新加載MyView.m的表,但它不重新加載。 我已經在MyView.m如何從其他視圖重新加載一個視圖的表

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

聲明下面的方法,並通過下面的代碼

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

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

該方法被調用,但是表不重裝連我檢查存在調用該方法的形式MySliderController.m類在控制檯通過下面的代碼

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

的tableview我得到(空)

但是當我下面的代碼

檢查
- (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 
+1

'MyView * obj = [[MyView alloc] init];'創建一個新的實例,我想,你想加載'existing'實例的表。 –

+0

是這兩個不同的屏幕?如果是這樣,只是在視圖中會出現... – rezand

+0

是的..你也可以檢查我的代碼在https://github.com/kanwarpalSingh/mycode –

回答

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]; 

你可以如果你不喜歡這個設置,也可以使用委託方法。有很多關於創建自己的代表的教程。祝你好運!