gpt4 book ai didi

objective-c - Xcode中类之间的简单变量传递

转载 作者:可可西里 更新时间:2023-11-01 06:19:20 24 4
gpt4 key购买 nike

我正在尝试做一个 ios 应用程序,但我坚持在类之间传递数据。这是我的第二个应用程序。第一个是在全局类中完成的,但现在我需要多个类(class)。我尝试了很多教程,但都没有用,或者传递的值始终为零。有人可以给我写一个简单的应用程序来演示 IOS 5 中变量的传递。没什么特别的, Storyboard有 2 个 View Controller ,一个变量。

感谢您的帮助。

- (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 或我按下的单元格索引发送到下一个 View

最佳答案

有几件事要做。根据应用程序的不同,您可以向 AppDelegate 类添加一个变量,使其通过共享实例对所有类可用。最常见的事情(我认为)是做一个单例。为此,您可以创建一个类(比如 StoreVars)和一个返回对象的静态方法,这使该类成为“全局”类。在该方法中,您像往常一样初始化所有变量。这样您就可以随时随地联系到他们。

@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;
}

这将成为一个单例。如果您记得在您的两个 View Controller 中导入“StoreVars.h”,您可以像这样访问现在共享的数组;

[StoreVars sharedInstance].mySharedArray;
^

这是一个返回 StoreVars 对象的方法。在 StoreVars 类中,您可以实现任何对象并在静态方法中对其进行初始化。永远记得初始化它,否则,你所有的对象都将是 0/nil。

如果您不是 UINavigationController 的粉丝并且更愿意使用 segues,它会容易得多,但会使您的应用程序变得相当“困惑”imo。在 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];
}
}

来源:How to pass prepareForSegue: an object

在问这样的问题之前做一些研究。阅读一些教程,亲自尝试,然后提出与您真正寻找的内容相关的问题。不是每天都有人愿意为你做所有的工作,但有时你很幸运。就像今天一样。

干杯。

关于objective-c - Xcode中类之间的简单变量传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com