为什么NSInteger无法从父视图控制器设置?

时间:2013-07-10 11:06:28

标签: ios nsinteger

在我的childview控制器中,我有这个属性:

@property (nonatomic, assign) NSInteger currentItemIndex;

在父视图控制器中,我想设置该值。

    [childViewController setCurrentItemIndex:5];
    [self.navigationController pushViewController:childViewController animated:YES];

但是在childViewController中,currentItemIndex为0。

为什么我无法设置它?我哪里错了?

3 个答案:

答案 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,你已经合成了属性。