我有一个'viewContoller'VC1,其中有一个容器视图,在VC1中嵌入了一个表视图控制器。

我有一个名为number的变量,它根据didSelectRowAtIndexPath相加并使用didDeselectRowAtIndexRowPath减去,因为它是表格。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    number += [[[self.sports objectAtIndex:indexPath.row] valueForKey:@"sportNumber"] intValue];
}

 -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    number -= [[[self.sports objectAtIndex:indexPath.row] valueForKey:@"sportNumber"] intValue];
}


此“数字”值属于嵌入式表控制器,我需要在VC1中访问它。

另外,“数字”变量会根据被选择或取消选择而不断变化,并且VC1需要知道何时发生这种情况,因此它具有最新的值。

我一直在寻找解决方案的几天,任何帮助将不胜感激。

最佳答案

很简单,执行以下操作,

1)转到界面生成器,并将名称设置为您的UIContainerView embed的名称(让我们说“ abc”)。稍后,我们将从VC1中访问它(在步骤4中)。



2)在VC1标头中定义您的number变量。



3)在表格视图控制器标头中,像这样定义对VC1的引用,

@property(nonatomic, retain) VC1 *VC;




4)在VC1类中,实现prepareForSegue并执行以下操作,

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSString * segueName = segue.identifier;
    if ([segueName isEqualToString: @"abc"]) {
        TableViewController *tblVC = (TableViewController *) [segue destinationViewController];
        tblVC.VC = self;
    }
}


5)现在,在表格视图控制器中,您可以如下访问数字变量,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

if (self.VC) {
        self.VC.number += [[[self.sports objectAtIndex:indexPath.row] valueForKey:@"sportNumber"] intValue];
  }
}

 -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {

if (self.VC) {
    self.VC.number -= [[[self.sports objectAtIndex:indexPath.row] valueForKey:@"sportNumber"] intValue];
  }
}


现在,您可以从number访问VC1变量,因为它是在VC1标头中定义的。请记住,这只是满足您的要求的一种方法。有几种方法可以处理这种情况。例如,如果您愿意,也可以采取其他方法。

关于ios - iOS-如何从容器 View 访问变量并将其传递回 View Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37957692/

10-11 09:01