如何从当前屏幕刷新UITableView
我在UINavigationController
中使用UITableView
。如何从当前屏幕刷新UITableView
在第一屏幕上我有一个名称为alen,john,smith的表格视图。他们有3条记录。现在我进入第二个屏幕,并更新数据库中所有三条记录的名称。 在我的第一个控制器中显示UITableView
,我在viewWillApear
委托方法中使用了[seld.tableView reloadData]
。每当我回到第一个屏幕时,我的viewWIllApear
代表方法调用和我的UITableView
刷新自己。
现在的问题是如果我从我自己的任何方法调用[self.tableview reloadData]
而不是viewWIllApear
。它会调用我的ViewDidLoad
方法,但它不会调用我的uitableView委托来更新我的记录。 PLease任何人都可以帮助我如何更新我的tableView保持在同一屏幕上。 ?
非常感谢
编辑:
- (void)viewDidAppear:(BOOL)animated {
[activityIndicator stopAnimating];
[self.tableView reloadData];
[super viewDidAppear:animated];
}
这是我ViewDidappear方法。我想要的是,只要我点击任何按钮保持在同一个UITableView屏幕上,它应该重新加载我的tableView,而不管数据数组中是否有任何变化。
结构中的这些按钮在哪里?他们是以编程方式创建的? 他们是uibutton子类吗? 即你打电话的方法在哪里?这听起来像你有自己的方法引用tableViewController的问题?
也许你应该在tableViewController上创建一个方法,然后从按钮中调用它。请显示您的方法代码,并指出方法所处的文件。
示例A:您创建按钮或其他所有内容都可能会触发界面构建器中的操作。持有的tableview中使用的方法类似下面的的viewController内部:
- (IBAction)updateTable:(id)sender
{
[self.tableview reloadData];
}
很明显,你必须出口与IB的动作连接。
示例B:以编程方式创建按钮。
// inside your loadView or viewDidLoad method
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(updateTable)
forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(x,y,width,hieght);
[yourView addSubview:button];
在你的ViewController:
-(void)updateTable
{
[self.tableView reloadData];
}
如果您UITableViewDelegate
方法没有开始叫,那么无论你tableView
出口未设置,或tableView
没有delegate
集。因为你似乎有多个视图控制器(一个使用tableView,另一个使用UIButton),那么你应该考虑如何在视图控制器之间进行最佳通信 - 通过传递tableView(打破封装,所以不好),通过代理/协议方法调用,通过NSNotification
或其他适当方式。
但我的uitableview插座已设置。它实际上会在我的屏幕重新出现时加载数据。那么当我调用[self.tableView reloadData]时,它不会被刷新? – Shah
我建议你在该行上用断点运行调试器,然后检查[self tableView]的值,然后[[self tableView] delegate]。如果这是在表视图和委托代码中的一个单独的视图控制器中,那么这些值将不会被设置。 –
显示一些你的代码请参考 – booleanBoy