从另一个视图重新加载数据uitableview

时间:2013-03-19 12:20:47

标签: ios objective-c uitableview reloaddata

我想从另一个UITableview重新加载UIView的数据。

UITableview位于ListNoteViewController

我从DetailViewController(另一个uiview)打来的电话是:

ListNoteViewController *controller = [[ListNoteViewController alloc] initWithNibName:@"ListNoteViewController" bundle:[NSBundle mainBundle]];

[controller.TableNotes reloadData];

但没有任何反应。请有人帮我吗?

高级谢谢

2 个答案:

答案 0 :(得分:3)

什么都不会发生,因为您正在尝试重新加载尚未创建的tableview! 只有在加载特定UIViewController的视图后才会创建UITableViewUILabel等UI元素。这里只是初始化了viewcontroller。

所以你应该在

中写这个
     -(void)viewDidAppear:(BOOL)animated 
     {
        [self.TableNotes reloadData];
     }

OR

  -(void)viewWillAppear:(BOOL)animated 
   {
       [self.TableNotes reloadData];
   }
ListNoteViewController的

这是您的代码的问题。如果ListNoteViewController已经在堆栈中,即如果您已经加载了相同的viewcontroller并且现在正在尝试重新加载其上的tableview,那么您可以使用自定义代理实现同样的目标。

你可以在这里看到how to add a delegate

答案 1 :(得分:3)

您可以使用代理人。

在DetailViewController.h中

@property (nonatomic, strong) id Delegate; 

在ListNoteViewController.m

-(void)myTVReloadMethod {
[myTable reloadData];
}

当你要去DetailViewController

DetailViewController *dvc = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:[NSBundle mainBundle]];
dvc.Delegate = self;
[self.navigationController pushViewController:dvc animated: yes];

在DetailViewController中的任何方法

[delegate performSelector:@selector(myTVReloadMethod) withObject:nil];