简体   繁体   English

TableView重新加载数据的麻烦

[英]TableView reload data troubles

I have a function which creates a few arrays and fills them with data. 我有一个函数,它创建一些数组并用数据填充它们。 I execute this function from viewDidLoad . 我从viewDidLoad执行此功能。

In the function I add [self.tableview reloadData]; 在函数中,添加[self.tableview reloadData];

I set breakpoints etc and it doesn't even go to numberOfRowsInTableView etc. Should [self.tableview reloadData] execute all the table view functions so it appears on the iPhone screen? 我设置了断点等,它甚至都没有转到numberOfRowsInTableView等。 [self.tableview reloadData]是否应该执行所有表视图功能,以便它出现在iPhone屏幕上?

** UPDATE ** **更新**

Firstly the function is called : 首先,该函数称为:

- (void)viewDidLoad
{

    [super viewDidLoad];

    ViewController *GetDeals = [[ViewController alloc] init];
    [GetDeals TopDealsRecieve:[[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"]];

    [self.tableview setDelegate:self];
    [self.tableview setDataSource:self];

    [self.tableview reloadData];

The function TopDealsRecieve gets the arrays like this : 函数TopDealsRecieve获取如下数组:

 NSLog(@"%@", responseObject);
        allLogos = [[responseObject valueForKey:@"data"] valueForKey:@"logo"];
        allcontent = [[responseObject valueForKey:@"data"] valueForKey:@"content"];
        allpostode = [[responseObject valueForKey:@"data"] valueForKey:@"postcode"];
        NSLog(@"%lu", (unsigned long)allcontent.count);
        allname = [[responseObject valueForKey:@"data"] valueForKey:@"name"];
        alladdress = [[responseObject valueForKey:@"data"] valueForKey:@"address"];
        alladdress2 = [[responseObject valueForKey:@"data"] valueForKey:@"address2"];
        alllat = [[responseObject valueForKey:@"data"] valueForKey:@"lat"];
        alllong = [[responseObject valueForKey:@"data"] valueForKey:@"lng"];
        // refresh the table view
        [self.tableview setDelegate:self];
        [self.tableview setDataSource:self];
        [self.tableview reloadData];

and in : 并在:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   NSLog(@"wnks %lu",(unsigned long)allcontent.count);
   return allcontent.count;

}

All the variables are available all throughout my code and they are assigned like this : 所有变量在我的代码中都可用,并且它们的分配方式如下:

// global var

NSArray *alllocationsID;
NSArray *alllocationsCity;
NSArray *allLogos;
NSArray *allcontent;
NSArray *allpostode;
NSArray *allname;
NSArray *alladdress;
NSArray *alladdress2;
NSArray *alllat;
NSArray *alllong;

At the top of the ViewController. 在ViewController的顶部。 This did work when the GetArray function wasn't a function and it was just placed in ViewDidLoad. 当GetArray函数不是函数,而是将其放置在ViewDidLoad中时,此方法确实起作用。

You should to add these 2 lines to your method viewDidload before to execute [self.tableview reloadData]; 您应该在执行[self.tableview reloadData];之前将这两行添加到方法viewDidload [self.tableview reloadData]; like this 像这样

[self.tableview setDelegate:self];
[self.tableview setDataSource:self];

[self.tableview reloadData];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM