从IOS中的方法更新表视图

时间:2014-12-21 04:35:42

标签: ios

我正在尝试从方法更新我的应用中的tableview。该表使用数组allShoppingItems作为数据源但由于某种原因,我似乎无法将任何新对象添加到数组中。这是方法。它位于ShoppingListTableViewController。

- (void)addToShoppingList: (FoodItem *) newItem
{
    if (newItem != nil) {

        [self.allShoppingItems addObject:newItem];

        [self.tableView reloadData];
    }
}

我测试过传递的对象不是nil,也不是tableView。

编辑: 这是我的numberOfRowsInSection和cellForRowAtIndexPath方法,也位于ShoppingListTableViewController中。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    // Return the number of rows in the section.
    return [self.allShoppingItems count];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"shoppingListIdentifier" forIndexPath:indexPath];

    // Configure the cell...

    FoodItem *shoppingItem = [self.allShoppingItems objectAtIndex:indexPath.row];
    cell.textLabel.text = shoppingItem.itemName;


    return cell;
}

阵列在主视图控制器的viewDidLoad方法中初始化。以下是AllItemsTableViewController - 初始视图控制器。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.allFoodItems = [[NSMutableArray alloc]init];

    shoppingList = [[ShoppingListTableViewController alloc] init];

    shoppingList.allShoppingItems = [[NSMutableArray alloc]init];
}

然后在那个班级打电话#39;展开方法。

- (IBAction)unwindToAllItems:(UIStoryboardSegue *)segue
{
    AddNewItemViewController *source = [segue sourceViewController];
    FoodItem *item = source.foodItem;
    if (item != nil) {
        [self.allFoodItems addObject:item];
        [self.tableView reloadData];
    }
    if (item != nil && item.currentNumber<=item.lowLevel) {
        [shoppingList addToShoppingList:item];
    }

}

数组已初始化,但是为空,无论我尝试什么,addToShoppingList都不会向数组添加任何内容。我用NSLog(@"%@",self.allShoppingItems);打印它,它始终显示的是&#34;()&#34;

也许有一种更简单的方法来实现这一目标。我只是希望能够将一个对象添加到表视图中,如果满足某些条件,也可以将它添加到第二个。

1 个答案:

答案 0 :(得分:-1)

我注意到您的源代码中存在“CellForRowAtIndexPath”方法的故障。

您正在重复使用单元格。但是,如果出列过程返回nil,您还需要创建一个新单元格。

ie:您需要一些类似于以下内容的代码:

UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@“shoppingListIdentifier”forIndexPath:indexPath];

如果(细胞==无){     cell = [[UITableViewCell alloc] init];

}