我有一个'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/