2015-07-23 4 views
1

Как передать атрибут (этот атрибут из сущности) через prepareForSegue для пользовательской ячейки?Атрибут прохождения через prepareForSegue

Следовательно, у меня также есть сомнения относительно отправки этого атрибута в качестве фильтра в соответствии с линией, которую пользователь нажимает? Например, в первой таблице пользователь нажимает кнопку «Пиццерия», затем на втором экране отображается другая таблица, содержащая только учреждения с категорией «Пиццерия».

Вот мой код до сих пор

#pragma mark - Ações da tabela 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    //O número de linhas da tabela será o mesmo número de objetos na lista de categorias 
    return listaDeCategorias.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    CelulaEstabelecimentoTableViewCell *celula = [tableView dequeueReusableCellWithIdentifier:IdentificadorCelula 
                       forIndexPath:indexPath]; 

    if(!celula) { 
     celula = [[CelulaEstabelecimentoTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                  reuseIdentifier:IdentificadorCelula]; 
    } 

    categoria = [NSEntityDescription insertNewObjectForEntityForName:@"Categoria" inManagedObjectContext:contexto]; 
    categoria.nome = [listaDeCategorias objectAtIndex:indexPath.row]; 

    [celula.textLabel setText:categoria.nome]; 
    [celula setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; 
    return celula; 
} 

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    categoria.nome = [listaDeCategorias objectAtIndex:indexPath.row]; 
    //NSString *categoriaClicada = [listaDeCategorias objectAtIndex:indexPath.row]; 
    [self performSegueWithIdentifier:IdentificadorSegue sender:categoria.nome]; 
} 

#pragma mark - Segue 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if([segue.identifier isEqualToString:IdentificadorSegue]) { 
     UINavigationController *navigationController = [segue destinationViewController]; 
     EstabelecimentoViewController *destino = (EstabelecimentoViewController *)([navigationController viewControllers][0]); 

    } 
} 

Примечание: Метод prepareForSegue намеренно неполным, потому что они не знают, как поступить оттуда.

А вот обычай клетки хочу заправить отфильтрованных данных enter image description here

, преобразованных: enter image description here

Раскадровка: enter image description here

+0

Можете ли вы показать, как ваш переход подключен в раскадровке? – Qazi

+0

Я не думаю, что вам нужен другой контроллер навигации, если вы не делаете ничего особенного с собой, вы можете напрямую перейти от вашей ячейки к контроллеру назначения, в контроллере назначения создайте переменную, которую вы можете установить в 'prepareForSegue' – Qazi

+0

@Qazi в этом случае какой тип segue будет? –

ответ

0

Предполагая ViewController вы segueing тоже EstabelecimentoViewController, который имеет общественная собственность «ном», вот как вы могли бы передать «ном» в «Учредительный элемент». Номер:

#import 'EstabelecimentoViewController.h' 
. 
. 
. 
#pragma mark - Segue 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if([segue.identifier isEqualToString:IdentificadorSegue]) { 
     EstabelecimentoViewController *establishmentVC = [segue destinationViewController]; 

     establishmentVC.nome = categoria.nome; 
    } 
} 
+0

Устанавливаемый элемент управления CreateViewController имеет TableView внутри с пользовательской ячейкой. Я хочу, чтобы мой атрибут появился в пользовательской ячейке. –

+0

Вам нужно сделать его источником данных tableview, а затем добавить его, используя это, если вы хотите работать таким образом – Qazi

0
/* Try This...*/ 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"mySegue"] && self.demoObject != nil) { 
     // This line returns a value... 
     NSLog(@"self.demoObject = %@", self.demoObject.itemDescription); 
     // ...but it crashes here when it tries to set on the destinationViewController 
     if ([[segue destinationViewController] isKindOfClass:[SecondViewController class]]) { 
      SecondViewController *destinationViewController = (SecondViewController *)[segue destinationViewController]; 
      destinationViewController.selectedItemPhoto = self.demoObject.photo; 
      destinationViewController.selectedItemTitle = self.demoObject.itemDescription; 
     } 
    } 
} 
Смежные вопросы