简单的在Xcode中的类之间传递variables

我正在尝试做一个iOS应用程序,但我坚持在类之间传递数据。 这是我的第二个应用程序。 第一个完成了全球课,但现在我需要多个class。 我尝试了很多教程,但没有成功,或者传递的值总是为零。 有人可以给我写一个简单的应用程序来演示IOS 5中的variables传递。 没有什么特别的,故事板2个视图控制器,一个variables。

感谢您的帮助 。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // Navigation logic may go here. Create and push another view controller. FirstViewController *fv; fv.value = indexPath.row; NSLog(@"The current %d", fv.value); FirstViewController *detail =[self.storyboard instantiateViewControllerWithIdentifier:@"Detail"]; [self.navigationController pushViewController:detail animated:YES]; } 

这里是我的主视图的代码,我需要发送indexPath.row或我按下的单元格的索引到下一个视图

有几件事情要做。 根据应用程序,您可以添加一个variables到AppDelegate类,通过共享实例使所有类都可用。 最常见的事情(我认为)是做一个单身人士。 为了达到这个目的,你可以创build一个类,例如StoreVars,以及一个返回对象的静态方法,这个类使得这个类变得“全局”。 在这个方法中,你可以初始化你所有的variables,就像你一直想的那样。 那么你总是可以从任何地方到达他们。

 @interface StoreVars : NSObject @property (nonatomic) NSArray * mySharedArray; + (StoreVars*) sharedInstance; @implementation StoreVars @synthesize mySharedArray; + (StoreVars*) sharedInstance { static StoreVars *myInstance = nil; if (myInstance == nil) { myInstance = [[[self class] alloc] init]; myInstance.mySharedArray = [NSArray arrayWithObject:@"Test"]; } return myInstance; } 

这将使一个单身人士。 如果您记得在两个viewController中导入“StoreVars.h”,则可以像这样访问现在共享的数组;

 [StoreVars sharedInstance].mySharedArray; ^ 

这是一个返回StoreVars对象的方法。 在StoreVars类中,您可以实现任何对象并在静态方法中初始化它。 只要始终记得初始化它,否则,所有的对象将是0 /零。

如果你不是UINavigationController的爱好者,而宁愿使用segues,那就更容易了,但是可以让你的app变得“凌乱”。 UIViewController中有一个方法需要重载:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Make sure your segue name in storyboard is the same as this line if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) { // Get reference to the destination view controller YourViewController *vc = [segue destinationViewController]; // Pass any objects to the view controller here, like... [vc setMyObjectHere:object]; } } 

来源: 如何通过prepareForSegue:一个对象

在问这样的问题之前做一些研究。 阅读一些教程,并尝试自己,然后提出有关你真正想要的问题。 不是每个人都想为你做所有的工作,但有时你是幸运的。 好像今天。

干杯。

如果在两个控制器之间使用segue,则必须重载prepareToSegue方法

 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // check if it's the good segue with the identifier if([[segue identifier] isEqualToString:@"blablabla"]) { // permit you to get the destination segue [segue destinationViewController]; // then you can set what you want in your destination controller } } 

你面对的问题对于初学者来说是相当复杂的。 “解决”错误的方式会导致学习一大堆坏习惯。
请看看Ole Begemann关于视图控制器之间传递数据的优秀教程 – 这真的值得一读。