我希望你能帮助我解决我的实际问题:
我已经使用导航控制器设置了一个新项目。对于项目的表视图,我为它添加了一个新类,名为“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类并生成所需的输出?
答案 0 :(得分:4)
您正在viewDidLoad
中记录字符串,该字符串在表视图的didSelectRow
方法中设置之前被调用很长时间。您还应该使用self.testString = ...
答案 1 :(得分:0)
您如何期望数据“转移”?你必须在tableView:didSelectCellAt:row(推送第二个视图的地方)中传递 ..你必须说:
2ndView.testString = self.testString;