【发布时间】:2012-01-06 12:47:27
【问题描述】:
我是一个新手,试图将从视图控制器 1 中的表中选择的行号传递给第二个视图控制器。
我正在尝试使用 VC1 中数字的属性声明来执行此操作:
@property (nonatomic, retain) NSNumber *passedSectorNumber;
然后在 VC1 中 @synthesized 并在 VC1 的 didSelectRowatIndexPath 中设置适当的行号:
self.passedSectorNumber = [NSNumber numberWithInt:[indexPath row]];
VC2 *vc2 = [[SectorEditor alloc] initWithNibName:@"vc2nibname" bundle:nil];
[self.navigationController pushViewController:vc2 animated:YES];
[vc2 release];
在 VC2 中,我还定义了一个同名的 NSNumber 属性,并对其进行综合。
在 VC2 中:
@property (nonatomic, retain) NSNumber *passedSectorNumber;
我因此在 VC 2 中测试传递的值:
NSInteger intvalue = [self.passedSectorNumber integerValue];
NSLog(@"The value of the integer is: %i", intvalue);
VC2 中“received”的数字始终为“0”,无论选择哪一行。
我犯了一个新手错误。知道在哪里吗?非常感谢您的输入。
【问题讨论】:
-
在
didSelectRowAtIndexPath中,你需要在 alloc-initvc2之后执行:vc2.passedSectorNumber = [NSNumber numberWithInt:indexPath.row];。为此,您需要在 VC2 中声明属性passedSectorNumber。您无需在 VC1 中声明属性passedSectorNumber。 -
你有
vc2.passedSectorNumber = self.passedSectorNumber吗? -
>>albertamg,谢谢,效果很好。非常感谢。
标签: objective-c uitableview uiviewcontroller parameter-passing