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;
}
そして、私が持っている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に渡すことです。