如何通过prepareForSegue为自定义单元格传递属性(此属性来自实体)?
因此,我还怀疑是否根据用户点击的行将此属性作为过滤器发送?例如,在第一个表中,用户点击“Pizzeria”,然后第二个屏幕显示另一个表,其中只包含“Pizzeria”类别的企业。
到目前为止,这是我的代码
#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方法故意不完整,因为他们不知道如何从那里继续。
答案 0 :(得分:0)
假设ViewController你也是segueing的是EstabelecimentoViewController,它有一个公共属性" nome",这就是你通过" nome"到EstabelecimentoViewController.nome:
#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;
}
}
答案 1 :(得分: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;
}
}
}