两个视图控制器使用相同的表视图

时间:2015-11-12 07:54:42

标签: ios objective-c uitableview didselectrowatindexpath

我是iOS开发的新手。我想知道如何将数据从同一个tableview传回两个不同的视图控制器。

这是我的电子方法:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
sendarea = [tableData objectAtIndex:indexPath.row];
Step2ClassifiedViewController *parentViewC = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count - 2];
parentViewC.areareceive = sendarea;
[self.navigationController popViewControllerAnimated:YES];


 }

但这仅适用于一种观点。如果我使用相同的表,我有另一个视图也需要传回数据。那可能吗?或者我只需要创建另一个表?

2 个答案:

答案 0 :(得分:0)

您可以使用同一张桌子。只需要更改数据源。并且可以调用每个 didSelectRowAtIndexpath

这就像,出租车司机用他的一辆出租车载客。当他的出租车空着时,他可以搭载乘客。

答案 1 :(得分:0)

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    sendarea = [tableData objectAtIndex:indexPath.row];

    if(state == 1){
        Step2ClassifiedViewController *parentViewC = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count - 2];
        parentViewC.areareceive = sendarea;
        [self.navigationController popViewControllerAnimated:YES];
    }
    else if (state == 2){
        //get your other View Controller and set data before pop to that view controller.
        NSArray *viewControllers = [[self navigationController] viewControllers];
        for(UIViewController *vc in viewControllers){
            if([vc isKindOfClass:[OtherViewController class]]){
                OtherViewController *otherVC = (OtherViewController*)vc;
                otherVC.areareceive = sendarea;
                [[self navigationController] popToViewController:otherVC animated:YES];
            }
        }
    }
    else{
        //load any View Controller you want
    }
}

根据您的问题和评论,我假设您希望根据不同的状态加载不同的View Controller并传递数据。

以上是这样做的一种方式。但是,您也可以将委托用于您的目的,这将是一个很好的编程实践。