Ios 在ViewController之间传递的数据是否正在重置?

Ios 在ViewController之间传递的数据是否正在重置?,ios,objective-c,iphone,Ios,Objective C,Iphone,我只是想在2UIViewController之间传递一个NSInteger,由于某种原因,数据不断被重置。我所说的重置是指我执行以下操作: - (void)pickerView:(AKPickerView *)pickerView didSelectItem:(NSInteger)item { PlayViewController *playScreen = [[PlayViewController alloc] init]; playScreen.playerNumber =

我只是想在2
UIViewController
之间传递一个
NSInteger
,由于某种原因,数据不断被重置。我所说的重置是指我执行以下操作:

- (void)pickerView:(AKPickerView *)pickerView didSelectItem:(NSInteger)item
{
    PlayViewController *playScreen = [[PlayViewController alloc] init];
    playScreen.playerNumber = item;
    NSLog(@"%d", playScreen.playerNumber);  
}
然后,NSLog将打印出所选对象的索引,但一旦我转到PlayViewController并执行以下切换语句:

switch (self.playerNumber){
        case 0:
            theView.playerComment.text = @"You, again";
            playerScores[0]++;
            break;

        case 1:
            if (numberPressed % 2){
                theView.playerComment.text = @"Player 2's Turn";
                playerScores[0]++;
            }
            else {
                theView.playerComment.text = @"Player 1's Turn";
                playerScores[1]++;
            }
            break;
 and so on.... the code would always receive 0 as the value of playerNumber...
此外,在PlayViewController.h中,变量播放器编号声明如下:

@property (nonatomic) NSInteger playerNumber;

创建
PlayViewController
的属性,并修改
pickerView-didSelectItem:
委托

@property (nonatomic, strong) PlayViewController *playScreen;

- (void)pickerView:(AKPickerView *)pickerView didSelectItem:(NSInteger)item
{
    if (nil == self.playScreen)
    {
       self.playScreen = [[PlayViewController alloc] init];
    }

    playScreen.playerNumber = item;
    NSLog(@"%d", playScreen.playerNumber);  
}

在pickerView中创建新的PlayViewController,设置playerNumber,然后放弃该视图控制器。为什么你希望playerNumber值神奇地跳转到PlayViewController的另一个实例???我想Hot Clicks想说的是问题在于你正在通过编写
PlayViewController*playScreen=[[PlayViewController alloc]init]来创建一个新的
PlayViewController
实例,但您从未实际转换到该视图控制器的特定实例。在
pickerView:didSelectItem:
的末尾,您创建的实例将消失,并且每当您实际进行转换时,都会使用一个全新的实例完成转换,该实例从未设置过
playerNumber
。创建PlayViewController的全局对象,然后尝试它可能会有所帮助you@Nikunj:欢迎光临。编辑时,请尽可能多地改进文章,这样其他人就不必再编辑文章了。还有,谢谢。请看一下和。谢谢我尝试了它,并通过以下操作调用了playviewcontroller中的player number变量:playerViewController*players=[[playerViewController alloc]init];开关(players.playScreen.playerNumber){case 0:theView.playerComment.text=@“您,再次”;playerCores[0]+;break;case 1:if(数字显示为%2)不要在PlayViewController内为“PlayerViewController”创建新对象,因为您已经将其与数据一起使用。使用PlayViewController内的“playScreen.playerNumber”,将您的开关修改为开关(self.playerNumber){case 0://您的代码}