1

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

(在UITableviewListNoteViewController

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

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

[controller.TableNotes reloadData];

但什么也没发生。拜托,有人可以帮助我吗?

进阶谢谢

4

2 回答 2

3

什么都不会发生,因为您正在尝试重新加载尚未创建的 tableview!只有在加载特定 UIViewController 的视图后才会创建 UI 元素(如UITableView等)。UILabel在这里,您刚刚初始化了视图控制器。

所以你应该把这个写在

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

或者

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

您的 ListNoteViewController。

这是您的代码的问题。如果ListNoteViewController已经在堆栈中,即,如果您已经加载了相同的视图控制器并且现在正尝试在其上重新加载 tableview,那么您可以使用自定义委托来实现相同的目的。

您可以在此处查看如何添加委托

于 2013-03-19T12:32:46.133 回答
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];
于 2013-03-19T13:19:29.040 回答