为什么UITableView Delegate方法只被单次调用?

时间:2016-08-08 07:03:08

标签: ios objective-c uitableview uitabbarcontroller

我正在尝试使用UITableView在我的应用程序中实现标签栏控制器。我有三个标签项。这是Product Tab的屏幕截图。我正在将我的产品添加到mycart。在我的购物车中添加两个产品后,这是我的MyCart Tab。但在返回产品选项卡并删除或添加任何产品并返回到MyCart选项卡后,它将保持不变。我在viewWillAppear()方法中加载了所有数据。使用断点我发现我的UITableView委托方法只在我每次更改标签项时都被调用一次。

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    AppDelegate *delegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
    handler = [delegate getHandler];

    allProducts = [handler getAllProducts];

   }

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    productDataModel = [allProducts objectAtIndex:indexPath.row];
    addToCartFlagNumber = (NSNumber*)productDataModel.productAvailability;

    if([addToCartFlagNumber integerValue]){

        static NSString *simpleTableIdentifier = @"ProductListTableViewCell";
        ProductListTableViewCell *cell = (ProductListTableViewCell*) [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

        cell.productListNameLabel.text = productDataModel.productName;
        cell.productListImageView.image = [UIImage imageNamed:productDataModel.productImageName];
        cell.productListDescriptionLabel.text = productDataModel.productDescription;
        cell.addToCartButton.tagValue = [productDataModel.productID integerValue];
        cell.addToCartButton.flagValue = 0;


        return cell;
    }

    else{
        static NSString *simpleTableIdentifier = @"UpcomingProductListTableViewCell";
        UpcomingProductListTableViewCell *cell = (UpcomingProductListTableViewCell*) [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];


        cell.productListNameLabel.text = productDataModel.productName;
        cell.productListImageView.image = [UIImage imageNamed:productDataModel.productImageName];
        cell.productListDescriptionLabel.text = productDataModel.productDescription;

        return cell;
    }

}

1 个答案:

答案 0 :(得分:1)

在所有三个选项卡中的viewController的viewWillAppear方法中使用以下代码。

[tableView reloadData];