我有两个标签:联系人和收藏夹。所有这些都在应用程序启动时加载。在“联系人”选项卡中,我有一个带有按钮的联系人列表" 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];
}
答案 0 :(得分:0)
更简单的方法是在favoritesTableviewController的ViewDidAppear中重新加载FavoritesTable。
另一种方法是将收藏夹数据更改的信息传递给favoritesTableViewController。
1)使用refreshPending Flag创建一个SettingsManagerSingleton并将其共享给两个子视图控制器。
2)在ContactsTableViewController中,如果有更改,请将标志设置为true。
3)在FavoritesTableViewController的viewWillAppear中,检查refreshPending是否设置为true并刷新表。重新加载后也将标志设置为false。