如何在两个视图控制器之间传递一个整数?

时间:2012-07-14 18:15:59

标签: objective-c ios

我正在使用Objective-C创建一个Rock Paper Scissors游戏,目前我遇到了从一个View Controller到另一个View Controller的整数问题。

我正在使用实用程序应用程序模板,我使用FlipsideViewController作为一个区域来设置最好的轮次(最好的3,5,7等)。但是,我无法将该整数带回MainViewController以将其用于使用。我阅读了关于这个主题的其他问题,但无法使其发挥作用。

这是FlipSideViewController.h文件中的协议

 @class FlipsideViewController;
 @protocol FlipsideViewControllerDelegate
  - (void)addItemViewController: (FlipsideViewController *)controller didFinishEnteringItem: (int)rounds;
 @end

以下是按下按钮以完成回合量时发生的操作

- (IBAction)submitBOO:(id)sender {
int rounds = 0;
rounds = _textField.text.intValue;

if (rounds % 2 ==0){ 
   _labelBOO.text = @"Pick an odd number!"; 

}   
else 
    [self.delegate addItemViewController:self didFinishEnteringItem:rounds];
}

MainViewController.m中的按钮切换到FlipsideViewController

- (IBAction)beginGame:(id)sender {
FlipsideViewController *controller = [[FlipsideViewController alloc]    initWithNibName:@"FlipsideViewController" bundle:nil];


controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];

}

1 个答案:

答案 0 :(得分:5)

声明int的属性不同于声明像NSNumber或NSString这样的对象。

您需要做的就是将其添加到标题中:

@property int someInt;

并在您的实施中合成。您不需要释放此属性,因为它不是真正的对象。它没有任何保留。如果你在ARC,你无论如何也不必担心。

如果这不能回答您的问题,请发布您尝试过的内容(即提供一些代码供您使用),您可能会得到更明智的答案。更好的问题=更好的答案。

限定词strong / weak不适用于int或其他原始数据类型,但如果你的目标是iOS4,你仍然可以使用(nonatomic),也可以使用(unsafe_unretained)