在两者之间传递数据

时间:2014-01-20 15:32:04

标签: ios objective-c didselectrowatindexpath

我有两个由segue连接的ViewControllers,第一个是子视图,第二个是 Sub Tabela 我想将该表中选定行的值从第一个视图控制器传递给第二个视图控制器,这样我就可以定义他的标题。 这是代码。

SubView.m(我的第一个ViewController)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // _vinhoArray is the array that I populate the TableView
    NSString *selectedRow = [_vinhoArray objectAtIndex:indexPath.row];
    // Sub Tabela is the name of Second View
    SubTabela *subTabela = [[SubTabela alloc] init];
    // tituloTabela is a NSString in my Second View
    subTabela.tituloTabela = linhaSelecionada;

    // Here i get the Right value
    NSLog(@"value %@", subTabela.tituloTabela);

}

SubTabela.h(我的第二个ViewController)

@property (nonatomic, strong) NSString *tituloTabela;

SubTabela.m

@synthesize tituloTabela;

- (void)viewDidLoad
{

    [super viewDidLoad];

    self.title = tituloTabela;

    // Here i get the a Null value
    NSLog(@"value %@", tituloTabela);

}

请帮助!

1 个答案:

答案 0 :(得分:1)

我认为您没有正确传递数据,看起来好像是在didSelectRowAtIndexPath内创建了一个对象并将数据传递给它,然后丢弃了这个对象。你需要做的就是这个:

[self performSegueWithIdentifier:<#(NSString *)#> sender:self];

更改屏幕,然后传递这样的数据prepareForSegue回调

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    SubTabela *vc = (SubTabela *)segue.destinationViewController;
    vc.tituloTabela = linhaSelecionada;
}