我有一个 tableView,我可以在其中从列表中选择一艘船,当我点击它时,我希望信息在另一个屏幕上弹出。我目前这样做的方式是:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
cargoShips* ship=[boatsForOwner objectAtIndex:indexPath.row];
UITableViewCell *cell = [self.boatsTableView cellForRowAtIndexPath:indexPath];
[self performSegueWithIdentifier:@"boatInfoSegue" sender:cell];
NSString *nameString = ship.name;
NSString *sizeString = ship.size;
NSUserDefaults *shipName = [NSUserDefaults standardUserDefaults];
[shipName setObject:nameString forKey:@"globalName"];
[shipName synchronize];
NSUserDefaults *shipSize = [NSUserDefaults standardUserDefaults];
[shipSize setObject:sizeString forKey:@"globalSize"];
[shipSize synchronize];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
并将其加载回文本(在另一个文件中)
NSString *getName = [[NSUserDefaults standardUserDefaults]
objectForKey:@"globalName"];
NSString *getSize = [[NSUserDefaults standardUserDefaults]
objectForKey:@"globalSize"];
shipNameText.text = getName;
shipSizeText.text = getSize;
现在,这很好用,除了它不返回我选择用于获取 infoView 的单元格,而是返回之前选择的对象。因此,如果我选择列表中的第一个对象,它将返回 null,我选择的下一个项目将获得我应该为第一个对象获得的结果,依此类推。
我做错了什么,我该如何解决?