UIPickerView в Detailview с .PLIST - PullRequest
       8

UIPickerView в Detailview с .PLIST

2 голосов
/ 12 июня 2011

Я искал решение web + stackoverflow для поиска.

У меня есть UITableView с информацией из файла .plist. У файла plist есть childs. Понравилось изображение.

plist http://www.afbeeldingenuploaden.nl/uploads/648899Schermafbeelding%202011-06-12%20om%2009.50.28.png

Когда я иду в DetailView, он отображает информацию из UIPickerView, который включен в представление. Я хочу отобразить информацию от ребенка в окне выбора, последний уровень. Понравилось изображение.

plist1 http://www.afbeeldingenuploaden.nl/uploads/740501Schermafbeelding%202011-06-12%20om%2012.03.40.png

Проблема в том, что я не могу достичь последнего уровня из списка в UIPickerview с моим кодом.

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    NSDictionary *dictionary = [tableDataSource objectAtIndex:row];
    return [dictionary objectForKey:@"days"];
}

Я использую в своем табличном представлении подробный вид для достижения последнего уровня списка.

NSString currentLevel

Может кто-нибудь помочь мне с этим, я застрял.

Ответы [ 3 ]

1 голос
/ 12 июня 2011

Когда я читаю plist, у него есть массив словарей, первый из которых имеет словарь как одно из значений на втором уровне массива.Исходя из этого, ваш метод должен быть,

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    NSDictionary *dictionary = [tableDataSource objectAtIndex:row];

    return [[dictionary objectForKey:@"New item"] objectForKey:@"days"];
}

Это будет работать для plist в изображении.Однако, если добавлено больше участников, они должны придерживаться той же структуры.

0 голосов
/ 13 июня 2011
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

// Configure the cell.

cell.textLabel.text = [[tableDataSource objectAtIndex:indexPath.row] objectForKey:@"name"];
cell.textLabel.numberOfLines = 2;
cell.textLabel.font = [UIFont boldSystemFontOfSize:16];

tableView.scrollEnabled = NO;

return cell;
}

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


NSDictionary *dictionary = [tableDataSource objectAtIndex:indexPath.row];
NSArray *modelle = [dictionary objectForKey:@"DETAIL"];
if([modelle count] == 0) {

    DetailController *dvController = [[DetailController alloc] initWithNibName:@"DetailController" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:dvController animated:YES];


    dvController.names.text = [dictionary objectForKey:@"name"];

} else {

    BootViewController *rvController = [[BootViewController alloc] initWithNibName:@"BootViewController" bundle:[NSBundle mainBundle]];

    rvController.currentLevel += 1;

    rvController.currentTitle = [dictionary objectForKey:@"name"];

    [self.navigationController pushViewController:rvController animated:YES];

    rvController.tableDataSource = modelle;

    [rvController release];
}
}
0 голосов
/ 13 июня 2011
- (void)viewDidLoad {

[super viewDidLoad];

NSString *Path = [[NSBundle mainBundle] bundlePath];
NSString *DataPath = [Path stringByAppendingPathComponent:@"Diyet.plist"];

NSDictionary *tempDict = [[NSDictionary alloc] initWithContentsOfFile:DataPath];
self.data = tempDict;
[tempDict release];

NSArray *tempArray = [[NSArray alloc] init];
self.tableDataSource = tempArray;
[tempArray release];

self.tableDataSource = [data objectForKey:@"Bitki"];

pickerView.delegate = self;
pickerView.dataSource = self;

}
...