2011-12-22 135 views
0

这就是我到目前为止得到的结果。 mainview.m将数据从一个视图传递到另一个视图(Storyboard,iOS)

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender(id)sender { 
secondView *secView = [segue destinationViewController] 
secView.ext = @".com"; 
} 

secondView.h

@interface secondView : UIViewController { 
NSString *ext; 
} 
@proper (nonatomic, retain) NSString *ext; 
@end 

secondView.m

-(void)viewDidLoad { 
NSString *url = [@"www.google" stringByAppendingFormat:ext] 
} 

而且它返回一个错误说ext是空......我究竟做错了什么?

回答

1

您是否尝试将分机转换为属性?我的理解是,“点”表示法实质上是将你的代码

[secView setExt:@".com"] 

所以,开启SecondView.h到

@interface secondView : UIViewController 

@property (nonatomic, copy) NSString *ext; 

@end 

而且不要忘了@synthesize它在你的.m文件

+0

我确实有过这些行..我只是忘了在这里输入它们,让我编辑! – Cloaky 2011-12-22 19:30:58

1

检查如下:

  1. 确保@synthesize ext;是SecondView.m
  2. 在故事板中,您是否正确链接了Segue?
  3. 在Stodyboard中,是表示SecondView定义为SecondView类的viewController吗?
  4. 确保您通过prepareForSegue:sender方法调用SecondView(即SecondView不会在您的代码中的其他位置调用pushViewController:animated)。
1

把一个断点在该行:

secView.ext = @".com"; 

,并确保该ext伊娃是在转让之后正确设置。如果不是,您可能会指定访问者在您的@synthesize指令中使用不同的伊娃尔ext,或者您可能提供了一个设置器-setExt:,它没有正确设置伊娃。

如果ext在赋值后正确设置,也许你有两个不同的secondView实例。当人们使用.xib文件时,这种情况经常发生 - 他们会在代码中创建一个视图控制器,并在.xib文件中创建另一个相同类的实例。我不希望在这里遇到这种情况,因为你从segue直接获得secView,但是值得思考。

+0

我刚发现问题..我从mainView指向选项卡栏控制器,而不是Tab1(这是第二个视图),这是导致destinationViewController返回别的! – Cloaky 2011-12-22 20:57:32

+0

我想这个解决方案是destinationController到你期望的类型。这会让你知道你没有选择正确的类型。 – Oli 2011-12-23 17:44:43

1

有两个视图:view1和view2。

  • 添加view2.h文件中的视图2 view1.h
  • 初始化对象并设置其变量。
相关问题