Ios 在ViewController之间传递的数据是否正在重置?
我只是想在2Ios 在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 =
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://您的代码}