UITableView重载数据在iOS中不起作用
我正在使用以下代码创建UITableView数据源阵列:UITableView重载数据在iOS中不起作用,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我正在使用以下代码创建UITableView数据源阵列: -(void) viewWillAppear:(BOOL)animated { // IBOutlet of tableview is 'editMsgTableView' editMsgTableView.dataSource=nil; editMsgTableView.delegate=nil; menuMessageArray = [[NSMutableArray alloc] init];
-(void) viewWillAppear:(BOOL)animated
{
// IBOutlet of tableview is 'editMsgTableView'
editMsgTableView.dataSource=nil;
editMsgTableView.delegate=nil;
menuMessageArray = [[NSMutableArray alloc] init];
editMainMenuMsgArray = [[NSMutableArray alloc] init];
menuMessageArray = [DBManager fetchmenu:0 noOfRows:32];
for(int i=0; i< [menuMessageArray count]; i++)
{
NSMutableDictionary *menuMsgListDic = [[NSMutableDictionary alloc] init];
menuMsgListDic = [menuMessageArray objectAtIndex:i];
[editMainMenuMsgArray addObject:menuMsgListDic];
}
editMsgTableView.dataSource=self;
editMsgTableView.delegate=self;
[editMsgTableView reloadData];
}
但不起作用。请帮助我。编辑开始时,请呼叫
[tableView]代码>编辑完成后,调用[tableView StopUpdate]代码>然后[tableView reloadData]代码>试试看
dispatch_async(dispatch_get_main_queue(), ^{
[editMsgTableView reloadData];
});
您是否正确地将tableViewDelegates提供给该视图控制器
@interface.h文件中的ViewController名称:UIViewController
我建议不要这样做:
editMsgTableView.dataSource=nil;
editMsgTableView.delegate=nil;
editMsgTableView.dataSource=self;
editMsgTableView.delegate=self代码>
仅此而已:
[self.editMsgTableView reloadData];
确保在使用reloadData时调用所有委托方法(在每个委托方法中放置一个断点,当您进行更改或视图出现时,应使用该断点重新加载表的数据),记住reloadData方法调用所有委托方法(如果您正确地向视图控制器提供了tableViewController的委托(如我前面所说)。如果这些都没有帮助,请告诉我。我假设您正在将视图从一个视图导航到另一个视图,那么您应该在ViewDidLoad
上调用[tableView reloadData]
。
这是因为视图生命周期-当您从一个视图返回并且更新了tableView
数据源时,视图生命周期如下所示:
viewDidLoad
tableViewDelegateMethods
viewdid出现
因此,当您更新tableView
的数据源对象并在viewDidLoad
期间调用reloadData
时,将解决此问题。可能会调用您的reload,但没有任何更改。tableView的委托方法是否会被调用?您的数据源数组是否也会得到更新的数据?请检查。首先,您是否真的希望要在每次视图出现时填充表的内容,是否已调试numberOfSectionsInTableView是否被调用?为什么要删除和设置datasource
和editMsgTableView
的delegate
,每次在视图中将出现而不是设置delegate
>在viewdiload
中。使用dealloc
方法释放。@FawadMasud:是的,一切正常。这很容易进入comment@tod回购不足:)
[self.editMsgTableView reloadData];