将一个int存储到NSNumber中,然后在一个新类中调用它

时间:2011-10-01 08:18:34

标签: iphone

所以基本上在我的ClassA.h上我创建了一个名为selected的NSNumber。它也用在@property中.h。现在在ClassA.m中我有一个表视图,当选择一个时,它会进入另一个屏幕。我希望indexPath.row保存到该NSNumber中。 (在.m中选择了@synthesized)

在ClassA.m中调用它的位置在didSelectRowAtIndexPath中,看起来像这样。

selected = [NSNumber numberWithInt:indexPath.row];

在下一个视图中,我想回忆一下这段代码,以便它可以根据选择通过代码加载一个特定的视图。我导入ClassA.h,这是我为ClassB.m

添加的代码
HowTosViewController *h = [[HowTosViewController alloc] init];

if([h.selected intValue] == 0){
    content.text = @"0";
}
else if ([h.selected intValue] == 1){
    content.text = @"1";
}

我假设我的问题是我没有正确存储或者没有正确调用它。我宁愿使用全局变量来做这个,所以如果有一个更简单的方法来使用它们我不介意。我感谢任何帮助。

另外作为旁注。当我去发布时,如果我在ClassB中做了它会导致任何问题或者是否正确?在使用该号码加载屏幕后,不再需要它,如果该人返回并选择另一个选项,则应分配另一个。

谢谢:)

编辑:忘了提及它目前正在做什么。目前,当单击ClassA中的任何单元格时,它将打开屏幕并显示0.

2 个答案:

答案 0 :(得分:1)

selected = [[NSNumber numberWithInt:indexPath.row] retain];

selected有保留属性...然后你做

self.selected = [NSNumber numberWithInt:indexPath.row];

答案 1 :(得分:0)

在ClassB.m

中执行此操作时
HowTosViewController *h = [[HowTosViewController alloc] init];

这是一个新实例,与存储所选值的实例不同。

考虑使用选定的值初始化你的ClassB,并在classB中使用它,如做

- (id) initWithSelectedIndex: (NSNumber *) selectedIndex {
    if(self = [super init]) {
       receivedSelectedIndex = selectedIndex;
    }
    return self;
}

delcare这个收到的选择指数就像

NSNumber *receivedSelectedIndex;
@implementation classB

你在哪里创建ClassB的实例,你应该这样做

classB *b = [[classB alloc] initWithSelecedIndex:selected]; //using your selected NSNumber