在我的childview控制器中,我有这个属性:
@property (nonatomic, assign) NSInteger currentItemIndex;
在父视图控制器中,我想设置该值。
[childViewController setCurrentItemIndex:5];
[self.navigationController pushViewController:childViewController animated:YES];
但是在childViewController中,currentItemIndex为0。
为什么我无法设置它?我哪里错了?
答案 0 :(得分:1)
ReceiverViewController.h
@property (nonatomic, assign) NSInteger currrentIndex;
ReceiverViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"Index value %d",self.currrentIndex);
}
DataPassingViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
DataPassingViewController *detailViewController = [[DataPassingViewController alloc] initWithNibName:@"DataPassingViewController" bundle:nil];
detailViewController.currrentIndex = 5;
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
}
我使用上面的代码,输出如下:
2013-07-10 17:50:10.230 DataPassing[3881:c07] Index value 5
答案 1 :(得分:0)
尝试在childview类中读取_CurrentIndex,应该使用setter setItemIndex方法自动生成和设置此变量。 我对Xcode有太多的经验,当我为64位目标构建时,带有下划线的内部变量是自动生成的,但对于32位目标,我必须在接口中声明它并在inplementation中使用@synthesize语句来获取代码编译。
答案 2 :(得分:-1)
简单地声明,如
@property NSInteger currentItemIndex;
如果它没有解决问题,你必须告诉你在哪里声明属性,在接口声明中是哪个类,你正在使用哪个xcode等等。发布更多代码。
e.g。对于xcode 4.6,这没关系。但对于旧的xcode,你已经合成了属性。