gpt4 book ai didi

ios - 如何读取 plist 文件然后填充 UItableView?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:44:37 26 4
gpt4 key购买 nike

我一直在尝试从 plist 文件中读取数据。这是它的结构

|term|detail(string)|

我的属性:

@property (nonatomic, strong) NSArray *terms;
@property (nonatomic, strong) NSArray *termKeys;//this is just a array to keep track
@property (nonatomic, strong) NSString *detail;

这就是我访问 cellForRowAtIndexPath 中详细信息的方式

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];

NSString *currentTermsName = [termKeys objectAtIndex :[indexPath row]];
[[cell textLabel] setText:currentTermsName];
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;


detail = [terms objectAtIndex:indexPath.row];

NSLog(@" bombs %@",terms[@"Bomb Threats"]);
return cell;

}

在 View 中我有 didload

- (void)viewDidLoad
{
[super viewDidLoad];


NSString *myfile = [[NSBundle mainBundle]
pathForResource:@"terms" ofType:@"plist"];
terms = [[NSDictionary alloc] initWithContentsOfFile:myfile];
termKeys = [terms allKeys];
}

它访问值,但它为每个对象存储相同的值,假设我在 plist 中有 5 条不同的记录,如果我打印详细信息,它会显示相同的记录 5 次。

设置细节后,我将其传递给 detialView

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if([segue.identifier isEqualToString:@"detailsegue"]){
TermsDetailViewController *controller = (TermsDetailViewController *)segue.destinationViewController;
controller.detailTerm = detail;
}
}

最后:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"detailsegue" sender:self];
}

这是我的字典:http://pastebin.com/bxAjJzHp

目标是将详细信息传递给 detailviewcontroller,就像 Master/detail 示例项目一样。

最佳答案

您不能在 cellForRowAtIndexPath: 方法中设置 detail 变量,因为这样值就变成了 transient :它取决于用户如何滚动表格,而不是用户点击了什么披露按钮。

移动这条线

detail = [terms objectAtIndex:indexPath.row];

didSelectRowAtIndexPath: 调用 performSegueWithIdentifier: 之前解决问题。现在,detail 设置为响应用户在 prepareForSegue: 调用之前的点击,确保将正确的值与详细信息数据一起传递给 View Controller 。

关于ios - 如何读取 plist 文件然后填充 UItableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210906/

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