Objective c UITableView无法从CustomCell重新加载数据
我有一个自定义单元格的UITableView。这是一个收藏夹列表,每个自定义单元格中都有星图。所以,如果我再次单击亮星,它们必须消失,并从名为fav.plist的属性列表中删除 但当我点击发光的星星时,它们并没有消失。我无法从CustomCell.m重新加载收藏夹列表中的数据。为了消除我点击星号的数据,我必须再次进入该视图。这是重新加载数据的唯一方法 我怎样才能让它在单击星星后重新加载数据,并保持在同一视图中 下面是我的CustomCell.m代码的一部分,其中最喜欢的列表是(列表的UITableView是favView,plist是fav.plist):Objective c UITableView无法从CustomCell重新加载数据,objective-c,uitableview,plist,reloaddata,Objective C,Uitableview,Plist,Reloaddata,我有一个自定义单元格的UITableView。这是一个收藏夹列表,每个自定义单元格中都有星图。所以,如果我再次单击亮星,它们必须消失,并从名为fav.plist的属性列表中删除 但当我点击发光的星星时,它们并没有消失。我无法从CustomCell.m重新加载收藏夹列表中的数据。为了消除我点击星号的数据,我必须再次进入该视图。这是重新加载数据的唯一方法 我怎样才能让它在单击星星后重新加载数据,并保持在同一视图中 下面是我的CustomCell.m代码的一部分,其中最喜欢的列表是(列表的UITabl
你实施了这个方法吗 (void)tableView:(UITableView*)tableView未选择RowAtIndex路径:
如果是,则在此方法中执行删除并重新加载。不能从单元格本身重新加载单元格。据我所知,您需要为您的单元实现委托协议。按下星号后,在customcell.m中调用按钮的方法,该方法从plist文件中删除星号并执行其他操作。然后调用委托(视图)上的方法重新加载该单元格。如果您不理解,我可以提供您的示例。但我只能在CustomCell中进行删除。我没有选择单元格,我只在CustomCell中按了一个按钮。您正在调用[YourTableView reloadData]方法吗;在CustomCell中,它将重新加载数据。请尝试使用singleton对象,而不是每次分配Favorite*favController=[[Favorite alloc]init];采取共享控制器,那么它应该工作。
@property (nonatomic, retain) NSMutableArray *favList;
//First I find the item from plist which one will be removed from fav.plist.
NSString *path_fav = [[self documentsDirectory] stringByAppendingPathComponent:@"fav.plist"];
self.favList = [[NSMutableArray alloc] initWithContentsOfFile:path_fav];
for (NSInteger i=0; i<[self.favList count];i++) {
d = [self.favList objectAtIndex:i];
NSString *code=[d objectForKey:@"CODE"];
NSComparisonResult res=[code compare:self.cityLabel.text];
if(res==NSOrderedSame){
//removing from the fav.plist
[self.favList removeObjectAtIndex:i];
//Here I try to reload the data for the UITableView called favView
//In Favorite.m is my UITableView called favView
NSString *path = [[self documentsDirectory]
stringByAppendingPathComponent:@"fav.plist"];
[self.favList writeToFile:path atomically:TRUE];
Favorite *favController =[[Favorite alloc]init];
[favController.favView reloadData];
[favController.favView reloadInputViews];
}
}
- (UITableViewCell*)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellID = @"cellid";
CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:cellID ];
if (cell == nil)
{
cell = (CustomCell*)[[[NSBundle mainBundle]
loadNibNamed:@"CustomCell" owner:nil options:nil]
lastObject];
}
NSDictionary *d = [self.favList objectAtIndex:indexPath.row];
cell.nameLabel.text = [d objectForKey:@"NAME"];
cell.cityLabel.text = [d objectForKey:@"CODE"];
cell.index= [NSString stringWithFormat:@"%d",indexPath.row];
cell.indexPath = indexPath;
NSString *starName;
if([[d objectForKey:@"FAV"] intValue]==0){
starName=@"star.png";
}else{
starName=@"starb.png";
}
[cell.self.starbtn setImage:[UIImage imageNamed:starName] forState:UIControlStateNormal];
if((indexPath.row % 2) ==0)
cell.contentView.backgroundColor=[UIColor colorWithRed:241/256.0 green:237/256.0 blue:237/256.0 alpha:1.0];
CGSize maxSize = CGSizeMake(320/2, MAXFLOAT);
CGSize nameSize = [cell.nameLabel.text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:maxSize lineBreakMode:NSLineBreakByWordWrapping];
if(nameSize.height>=72)
nameSize.height=63;
else
nameSize.height=38;
cell.nameLabel.frame =CGRectMake(80, 0, 213, nameSize.height);
return cell;
}