gpt4 book ai didi

ios - 当用户多次加载 View 时,在 uitableview 上保存附件复选标记

转载 作者:可可西里 更新时间:2023-11-01 03:28:44 26 4
gpt4 key购买 nike

所以我已经实现了一个带有 tableview 的 UIViewController,基本上它作为我的 uicollectionview 的一组“过滤器”加载。

现在,当我点击表格 View 中的复选标记时,它会相应地“过滤”我的单元格,但现在当我再次重新加载 View 时,我想显示我最近使用过的“复选标记”或“过滤器”。 "

我已经看到这是通过 NSUserDefaults 实现的,但我无法成功实现它。

如果有人能帮助我,那将不胜感激。

代码

FiltersViewController.m:

#import "FiltersViewController.h"

@interface FiltersViewController ()

@property (nonatomic, strong) NSMutableSet *selectedRowObjects;
//@property (nonatomic, strong) NSArray *filters;

@end

@implementation FiltersViewController


- (void)viewDidLoad
{
[super viewDidLoad];

self.selectedRowObjects = [NSMutableSet setWithCapacity:10];
}

- (IBAction)filtersSelected:(id)sender {
[self.delegate filtersSelected:self.selectedRowObjects];
}

- (IBAction)cancelFilterSelection:(id)sender {
[self.delegate filterSelectionCancelled];
}

- (NSString *)getKeyForIndex:(int)index
{
return [NSString stringWithFormat:@"KEY%d",index];
}

- (BOOL) getCheckedForIndex:(int)index
{
if([[[NSUserDefaults standardUserDefaults] valueForKey:[self getKeyForIndex:index]] boolValue]==YES)
{
return YES;
}
else
{
return NO;
}
}

- (void) checkedCellAtIndex:(int)index
{
BOOL boolChecked = [self getCheckedForIndex:index];

[[NSUserDefaults standardUserDefaults] setValue:[NSNumber numberWithBool:!boolChecked] forKey:[self getKeyForIndex:index]];
[[NSUserDefaults standardUserDefaults] synchronize];
}


#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"filter" forIndexPath:indexPath];
cell.textLabel.text = [NSString stringWithFormat:@"%u", indexPath.row];



return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSString *obj = cell.textLabel.text;

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
cell.accessoryType = UITableViewCellAccessoryNone;
[self.selectedRowObjects removeObject:obj];
}
else {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[self.selectedRowObjects addObject:obj];
}

[tableView deselectRowAtIndexPath:indexPath animated:YES];

}
@end

最佳答案

您还需要检查 cellForRowAtIndexPath。把这段代码写在这

if([[NSUserDefaults standardUserDefaults] objectForKey:[self getKeyForIndex:indexPath.row]])
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else
{
cell.accessoryType = UITableViewCellAccessoryNone;
}

是的,不要忘记在 didSelectRowAtIndexPath 中调用这个方法

[self checkedCellAtIndex:indexPath.row];

享受吧。

关于ios - 当用户多次加载 View 时,在 uitableview 上保存附件复选标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com