关于另一个问题,我尝试了一些方法来将一个 tableView 中的一个单元格添加到一个新的单元格中。首先,我有一张小图片,它显示了这个过程应该如何工作。
有CarsViewController
包含一系列汽车。当您点击一个单元格时,一个新视图 ( CarDetailViewController
) 会显示每辆车的详细信息并favoriteButton
打开。通过点击此按钮,tableView ( ) 中的这辆车的单元格CarsViewController
应添加到新的 tableView ( FAVViewController
) 中,如图所示。
我已经尝试过一些东西,但没有奏效。Car
班级:
#import "Car.h"
@implementation Car
@synthesize name;
@synthesize speed;
@end
CarsViewController
:
@implementation CarsViewController {
NSArray *cars;
}
@synthesize tableView = _tableView;
- (void)viewDidLoad
{
Car *car1 = [Car new];
car1.name = @"A1";
car1.speed = @"200 km/h";
Car *car2 = [Car new];
car2.name = @"A2";
car2.speed = @"220 km/h";
cars = [NSArray arrayWithObjects:car1, car2, nil];
}
带有它的CarDetailViewController
按钮:
@implementation CarDetailViewController{
NSMutableArray *favoritesArray;
}
...
- (IBAction)setFAV:(id)sender {
[favoritesArray addObject:car];
[[NSUserDefaults standardUserDefaults] setObject:favoritesArray forKey:@"favoriteCars"];
}
最后是FAVViewController
:
@implementation FAVViewController{
NSMutableArray *array;
}
- (void)viewDidLoad
{
[super viewDidLoad];
array = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"favoriteCars"]];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [array count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"Cell2";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
}
Car *cars2 = [array objectAtIndex:indexPath.row];
UILabel *CarNameLabel = (UILabel *)[cell viewWithTag:100];
CarNameLabel = cars2.name;
return cell;
}
更新
我已经尝试过从 tableView 中删除一个单元格,但是在重新加载视图后,所有单元格都消失了。
-(void)remove{
[favoritesArray removeObject:car];
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:favoritesArray] forKey:@"favoriteCars"];
} //in CarDetailView
和...
- (void)tableView:(UITableView *)table commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
CarDetailViewController *instance = [[CarDetailViewController alloc] init];
[instance remove];
[array removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}