У меня есть два контроллера вида, TypeViewController
и FavoritesViewController
, TypeViewController
состоит из типа, который может быть Избраным путем нажатия UIBarButtonItem
. Нажатие кнопки сохраняет тип в массиве и сохраняет этот массив в файл. FavoritesViewController
открывает этот файл и использует его массив для заполнения UITableView, который я делаю в его методе ViewDidLoad
, а затем в конце я добавляю [self.tableView reloadData]
, чтобы убедиться, что tableView будет заполнен. Тем не менее, я заметил, когда я пытаюсь не любить тип (снова нажав UIBarButtonItem
), он не будет удален из tableView. Я понятия не имею, как я должен это делать! Как удалить ячейку tableView? Любой вход был бы очень благодарен, и, пожалуйста, дайте мне знать, если мне нужно предоставить какие-либо другие детали! Благодаря = DУдаление ячейки из UITableView с другой UIViewController
Вот код:
От TypeViewController
:
//When The UIBarButtonItem is pressed
-(IBAction)favoriteTheSubject:(id)sender{
//Open the saved array
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *arrayFileName = [documentsDirectory stringByAppendingPathComponent:@"favoritedTypes.dat"];
NSMutableArray *favoritedTypeInfo = [[NSMutableArray alloc] initWithContentsOfFile: arrayFileName];
//If the array file does not exist, set the array
if(favoritedTypeInfo == nil)
{
NSLog(@"Didn't exist in SecondaryDetailVC");
favoritedTypeInfo = [[NSMutableArray alloc] init];
}
//Favorite item
if ([self.navigationItem.rightBarButtonItem.image isEqual:[UIImage imageNamed:@"FavButton.png" ]]) { //FavButton.png is the unselected favorite button
[self.navigationItem.rightBarButtonItem setImage:[UIImage imageNamed:@"FavButtonSelected.png"]];//Change the image
//Add the type
[favoritedTypeInfo addObject:typeOfObject];
[favoritedTypeInfo addObject:priceOfType];
NSLog(@"Added Item");
[favoritedTypeInfo writeToFile:arrayFileName atomically:YES];
}
else{ //Unfavorite Item
[self.navigationItem.rightBarButtonItem setImage:[UIImage imageNamed:@"FavButton.png"]];
//Create an array to insert all the values to remove
NSMutableArray *removeArray = [[NSMutableArray alloc]init];
for (int i = 0; i < [favoritedTypeInfo count]; i++) {
NSString *sameTitle =favoritedTypeInfo[i];
if ([self.tableTitle isEqualToString:sameTitle]) {
//Add typeOfObject and priceOfType to removeArray
[removeArray addObject:favoritedTypeInfo[i]];
[removeArray addObject:favoritedTypeInfo[i+1]];
NSLog(@"Removed %@", removeArray[i]);
}
}
//Remove objects
[favoritedTypeInfo removeObjectsInArray:removeArray];
[favoritedTypeInfo writeToFile:arrayFileName atomically:YES];
}
}
От FavoriteViewController
:
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//Open the array from file
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *arrayFileName = [documentsDirectory stringByAppendingPathComponent:@"favoritedTypes.dat"];
NSMutableArray *savedArray = [[NSMutableArray alloc] initWithContentsOfFile: arrayFileName];
if(savedArray == nil)
{
NSLog(@"Couldn't Open Favorites Array");
}else{
for (int i = 0; i < [savedArray count]; i++) {
if (i%2 == 0) {
//Array for favorited typesOfObject
[self.favoritedTypesInfo addObject:savedArray[i]];
} else if (i%2 == 1){
//Array for favorited priceOftypes
[self.favoritedPriceTypes addObject:savedArray[i]];
}
}
//Test to see if there are duplicate objects in arrays
int countFavorited = 0;
for (int i = 0; i < [self.favoritedTypesInfo count]; i++) {
for (int k = 0; k < [self.favoritedTypesInfo count]; k++) {
NSString *kString = [self.favoritedTypesInfo objectAtIndex:k];
NSString *iString = [self.favoritedTypesInfo objectAtIndex:i];
if ([kString isEqualToString:iString] && kString.length == iString.length) {
NSLog(@"%@ : %@", kString, iString);
countFavorited += 1;
if (countFavorited > 1) {
[self.favoritedTypesInfo removeObjectAtIndex:k];
[self.favoritedPriceTypes removeObjectAtIndex:k];
countFavorited = 0;
}
}
}
}
}
[self.tableView reloadData];
}
Вы удалили этот тип в массиве? –
да! и я переписал его в файл после того, как я удалил его. Я забыл добавить, если я закрою свое приложение, а затем снова запустил его на xcode или полностью остановил его процесс, он обновит таблицу, но я хочу, чтобы он сразу же обновил таблицу. –
показать код, чтобы кто-то может показать вам, где проблема? –