从其他类访问NSStrings

时间:2012-11-11 20:08:59

标签: objective-c ios xcode cocoa-touch cocoa

我希望你能帮助我解决我的实际问题:

我已经使用导航控制器设置了一个新项目。对于项目的表视图,我为它添加了一个新类,名为“TableViewController.h”和“TableViewController.m”。

在这个类中,我在.h中声明了NSString的一个属性,可以从其他类访问它,如下所示:

    @property (strong, nonatomic) NSString *testString;

在.m我已经合成了如下:

    @synthesize testString;

现在我设置 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath-表视图控制器的方法如下:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
     testString = @"Hello, World!";
    }

现在为下一个视图创建了一个新的UIViewController类,它应该在我点击一个单元格时出现(到目前为止一切都有效)。在这个名为“SecondView”的UIViewController中,我导入了TableViewController的.h-File。 我在SecondView.m中有这段代码:

    -(void) viewDidLoad
    {
     [super viewDidLoad];
     TableViewController *demoObject = [TableViewController alloc] init]
     NSLog (@"Teststring is: %@" [demoObject.testString]);
    }

现在,当我启动模拟器时,我得到了这个输出: Teststring是:( null)

当我在TableViewController中NSLog testString时,我得到“Hello,World”,但为什么它“转移”到SecondView类并生成所需的输出?

2 个答案:

答案 0 :(得分:4)

您正在viewDidLoad中记录字符串,该字符串在表视图的didSelectRow方法中设置之前被调用很长时间。您还应该使用self.testString = ...

答案 1 :(得分:0)

您如何期望数据“转移”?你必须在tableView:didSelectCellAt:row(推送第二个视图的地方)中传递 ..你必须说:

2ndView.testString = self.testString;