从cell ios重新加载其他选项卡

时间:2015-12-31 11:33:35

标签: ios uitableview

我有两个标签:联系人和收藏夹。所有这些都在应用程序启动时加载。在“联系人”选项卡中,我有一个带有按钮的联系人列表" addToFavorites"在每个细胞中。

这是单元格:

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

    User *us = [usersData objectAtIndex:indexPath.row];

    cell.actualLoggedUser = self.actualLoggedUser;
    cell.contactsUserId = us.userId;
    cell.contactsName.text = [NSString stringWithFormat:@"%@ %@",us.fname,us.lname];
    [cell.contactsImage setImage: [UIImage imageNamed:us.imageName]];
    return cell;
}

当我单击单元格中的addToFavorites按钮时,会调用此方法:

- (IBAction)contactsAddToFav:(id)sender{
    [[[ModelUser instance] getUser:self.actualLoggedUser] addFavUser:self.contactsUserId];
}

模型正确更新但我需要两件事:
1.我想以某种方式从contactsTableViewController调用favoritesTableViewController上的重载函数。例如:当我运行应用程序时,我在收藏夹标签中看到3个联系人,在添加另一个联系人(从联系人选项卡)后,我应该看到4个联系人。
2.此外,我想在收藏夹标签中点击favoritesTableViewCell中的删除按钮后更新收藏夹列表。

- (void)reloadData {

    NSLog(@"Favorites tab was loaded");

    //get id of my favorite contacts
    myFavListId = [[ModelUser instance] getUser:self.actualLoggedUser].contactsFavoriteList;

    //get data of my favorites contacts
    myFavListContactsData = [[NSMutableArray alloc] init];
    for (int i=0; i < [myFavListId count] ; i++) {
        User* us = [[ModelUser instance] getUser:([myFavListId objectAtIndex:i])];
        [myFavListContactsData addObject:us];
    }
    [self.tableView reloadData];
}

contacts tab

favorites tab

1 个答案:

答案 0 :(得分:0)

更简单的方法是在favoritesTableviewController的ViewDidAppear中重新加载FavoritesTable。

另一种方法是将收藏夹数据更改的信息传递给favoritesTableViewController。

1)使用refreshPending Flag创建一个SettingsManagerSingleton并将其共享给两个子视图控制器。

2)在ContactsTableViewController中,如果有更改,请将标志设置为true。

3)在FavoritesTableViewController的viewWillAppear中,检查refreshPending是否设置为true并刷新表。重新加载后也将标志设置为false。