У меня есть UITableView с CustomCells. Это список избранных, и в каждом CustomCell есть звездообразные изображения. Поэтому, если я снова зажгу светящиеся звезды, их нужно будет удалить и удалить из списка свойств, называемого fav.plist.UITableView не может перезагрузить данные из CustomCell
Но когда я нажимаю освещенные звезды, они не исчезают. Я не могу перезагрузить данные в списке избранного из CustomCell.m. Чтобы исчезнуть данные, которые я нажал на звезду, я должен снова вернуться к этому представлению. Это единственный способ перезагрузить данные.
Как я могу заставить его перезагрузить данные после щелчка по звезде с одним и тем же видом?
Вот часть моего CustomCell.m кода, где список избранных (UITableView для списка favView, то PLIST является fav.plist):
@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){
[email protected]"star.png";
}else{
[email protected]"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;
}
Но я могу сделать удаление только в CustomCell. И я не выбираю Cell, я просто нажимаю кнопку в CustomCell. –
Вы вызываете метод [YourTableView reloadData]; в CustomCell он перезагрузит данные. –
попробуйте использовать одноэлементный объект, вместо того, чтобы выделять каждый раз Favorite * favController = [[Favorite alloc] init]; Возьмите общий контроллер, тогда он должен работать. –