@ Фейсал:
Глядя на ваш код, я предполагаю, что ваши метки находятся под вашим tableView, так как вы используете indexPath.row
для индексации массива
Ваша идея выглядит правильно.
ШАГ-1:
Извлечение данных из plist в ваш массив ( Plist -> Array )
Скажем, если ваше plist-имя Exercise.plist
, то вы можете использовать следующий код для извлечения ваших данных в plist
NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"Exercise" ofType:@"plist"];
exerciseArray = [NSArray arrayWithContentsOfFile:plistPath];
ШАГ-2:
Получить данные из массива в текст метки ( Массив -> Текст метки )
Затем установите текст UILabel из значений массива, используя приведенный ниже код
label.text =[[exerciseArray objectAtIndex:indexPath.row]objectForKey:@"exercises"];
ПРИМЕЧАНИЕ:
Для использования одного и того же массива между вами masterView и detailView вы можете установить свой массив в NSUserDefaults на didSelectRowAtIndexPath
в вашем masterView и получить тот же массив в detailView.
Вы можете сделать это, используя следующий код:
В masterView для didSelectRowAtIndexPath
метод:
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
[def setObject:exerciseArray forKey:@"InfoArray"];
[def setValue:[NSString stringWithFormat:@"%d",indexPath.row] forKey:@"indexVal"];
Вы можете получить этот массив в detailView, используя следующий код:
NSMutableArray *exerciseDetailArray = [[[NSUserDefaults standardUserDefaults] objectForKey:@"InfoArray"] mutableCopy];
int indexValue = [[[NSUserDefaults standardUserDefaults] valueForKey:@"indexVal"] intValue];
label.text =[[exerciseDetailArray objectAtIndex:indexValue] objectForKey:@"exercises"];
OR
NSArray *exerciseDetailArray = [[NSArray alloc] initWithContentsOfArray:[[NSUserDefaults alloc] objectForKey:@"InfoArray"]];
int indexValue = [[[NSUserDefaults standardUserDefaults] valueForKey:@"indexVal"] intValue];
label.text =[[exerciseDetailArray objectAtIndex:indexValue] objectForKey:@"exercises"];
Надеюсь, это поможет вам:)
Окончательное редактирование:
Замените ваш метод didSelectRowAtIndexPath:
на метод, описанный ниже в SpecificExerciseTableViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
detailViewController.exerciseArray = [[self.exerciseArray objectAtIndex:indexPath.row]objectForKey:@"exercises"];
// Pass the selected object to the new view controller.
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
[def setObject:exerciseArray forKey:@"InfoArray"];
[def setValue:[NSString stringWithFormat:@"%d",indexPath.row] forKey:@"indexVal"];
NSLog(@"Index inexpath:%d",indexPath.row);
int indexValue = [[[NSUserDefaults standardUserDefaults] valueForKey:@"indexVal"] intValue];
NSLog(@"index value master view: %d",indexValue);
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
Это наверняка сработает:)