我正在尝试做一个 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];

}

这是我的主 View 中的代码,我需要将 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;
}

这将成为一个单例。如果你记得在你的两个 viewController 中导入“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/

10-12 21:21
查看更多