我试图通过单击一个单元格在UITableViewController中填充UITextFields。所以,我创建了一个init方法,如:
- (id)initWithObjetoFormulario:(ObjetoFormularioGerenciador *)umObjeto
{
self = [super init];
if(self){
self.objetoFormulario = umObjeto;
}
return self;
}
在我的ViewDidLoad
中,我将行if(self.objetoFormulario){
放在后面,然后将UITextFields链接到我的对象。我认为此时没有任何错误。
所以,我的第二个TableViewController是一个SearchDisplayController,它找到了我需要的数据,我在didSelectRowAtIndexPath
找到了:
ObjetoFormularioGerenciador *objeto = [[ObjetoFormularioGerenciador alloc] init];
[objeto RecebeArrayComDadosECriaObjetoFormularioGerenciador:_arrayComDados eEmail: [searchResults objectAtIndex:indexPath.row]];
GerenciarSeriesTableViewController *gerenciador = [[GerenciarSeriesTableViewController alloc] initWithObjetoFormulario:objeto];
[self.navigationController pushViewController:gerenciador animated:NO];
由于我的单元格中没有实际对象,因此我调用一个方法来根据单元格条目检索对象,这也是有效的,现在,当我单击单元格时,它会打开一个空白的TableView。它应该返回到包含UITextFields的静态单元格的tableView并填充它们。
当我使用此代码时:
ObjetoFormularioGerenciador *objeto = [[ObjetoFormularioGerenciador alloc] init];
[objeto RecebeArrayComDadosECriaObjetoFormularioGerenciador:_arrayComDados eEmail:[searchResults objectAtIndex:indexPath.row]];
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
GerenciarSeriesTableViewController *gerenciador = [sb instantiateViewControllerWithIdentifier:@"GerenciarSeriesTableViewController"];
[self.navigationController pushViewController:gerenciador animated:NO];
它确实打开了我想要的TableView,但它没有填充UITextFields,因为我没有传递任何对象。
感谢。
答案 0 :(得分:3)
是的,对于视图控制器,你实际上通常没有自定义init
方法,而是依赖于标准控制器,然后在实例化视图控制器后,你只需设置属性,例如:
ObjetoFormularioGerenciador *objeto = ... // create and configure objeto
GerenciarSeriesTableViewController *gerenciador = [self.storyboard instantiateViewControllerWithIdentifier:@"GerenciarSeriesTableViewController"];
gerenciador.objetoFormulario = objeto;
[self.navigationController pushViewController:gerenciador animated:NO];
您还可以在两个视图控制器之间使用segue,为其指定标识符,然后调用[self performSegueWithIdentifier:...]
,然后在objetoFormulario
方法中设置prepareForSegue
。但是上述技术也应该可以正常工作。