我在UITableView
内使用UINavigationController
。
在第一个屏幕上,我有一个带有名字的桌面视图,alen,john,smith。他们是3条记录。现在我进入第二个屏幕并更新数据库中所有三个记录的名称。
在我显示UITableView
的第一个控制器中,我在[seld.tableView reloadData]
委托方法中使用了viewWillApear
。每当我回到第一个屏幕时,viewWIllApear
委托方法调用,UITableView
自我刷新。
现在的问题是,如果我从我自己的任何方法调用[self.tableview reloadData]
而不是viewWIllApear
。它会调用我的ViewDidLoad
方法,但它不会调用我的uitableView委托来更新我的记录。
任何人都可以帮助我如何通过保持在同一屏幕上来更新我的tableView。 ?
非常感谢
编辑:
- (void)viewDidAppear:(BOOL)animated {
[activityIndicator stopAnimating];
[self.tableView reloadData];
[super viewDidAppear:animated];
}
这是我的ViewDidappear方法。我想要的是,每当我点击任何保留在同一个UITableView屏幕上的按钮时,它应该重新加载我的tableView,而不是数据阵列有任何变化。
答案 0 :(得分:0)
结构中的这些按钮在哪里?他们是以编程方式创建的? 他们是uibutton子类吗? 即你打电话的方法在哪里?听起来你有问题从你自己的方法引用tableViewController?
也许你应该在tableViewController上创建一个方法然后从按钮调用它。请显示您的方法代码,并指出方法所在的文件。
答案 1 :(得分:0)
示例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];
}
答案 2 :(得分:0)
如果您的UITableViewDelegate
方法未开始调用,则表示您的tableView
商店未设置,或者tableView
未设置delegate
。由于您似乎有多个视图控制器(一个使用tableView,另一个使用UIButtons),那么您还应该考虑如何最好地在视图控制器之间进行通信 - 通过传递tableView(打破封装,所以不好),通过委托/协议方法调用,通过NSNotification
或其他一些适当的方法。