Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UITableView重载数据在iOS中不起作用_Ios_Objective C_Uitableview - Fatal编程技术网

UITableView重载数据在iOS中不起作用

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];

我正在使用以下代码创建UITableView数据源阵列:

-(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];