我想从另一个UITableview
重新加载UIView
的数据。
(UITableview
位于ListNoteViewController
)
我从DetailViewController
(另一个uiview)打来的电话是:
ListNoteViewController *controller = [[ListNoteViewController alloc] initWithNibName:@"ListNoteViewController" bundle:[NSBundle mainBundle]];
[controller.TableNotes reloadData];
但没有任何反应。请有人帮我吗?
高级谢谢
答案 0 :(得分:3)
什么都不会发生,因为您正在尝试重新加载尚未创建的tableview!
只有在加载特定UIViewController的视图后才会创建UITableView
,UILabel
等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];