将数据从一个视图传递到另一个视图(Storyboard,iOS)
问题描述:
这就是我到目前为止得到的结果。 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是空......我究竟做错了什么?
答
您是否尝试将分机转换为属性?我的理解是,“点”表示法实质上是将你的代码
[secView setExt:@".com"]
所以,开启SecondView.h到
@interface secondView : UIViewController
@property (nonatomic, copy) NSString *ext;
@end
而且不要忘了@synthesize它在你的.m文件
答
检查如下:
- 确保
@synthesize ext;
是SecondView.m - 在故事板中,您是否正确链接了Segue?
- 在Stodyboard中,是表示SecondView定义为SecondView类的viewController吗?
- 确保您通过
prepareForSegue:sender
方法调用SecondView(即SecondView不会在您的代码中的其他位置调用pushViewController:animated
)。
答
把一个断点在该行:
secView.ext = @".com";
,并确保该ext
伊娃是在转让之后正确设置。如果不是,您可能会指定访问者在您的@synthesize
指令中使用不同的伊娃尔ext
,或者您可能提供了一个设置器-setExt:
,它没有正确设置伊娃。
如果ext
是在赋值后正确设置,也许你有两个不同的secondView
实例。当人们使用.xib文件时,这种情况经常发生 - 他们会在代码中创建一个视图控制器,并在.xib文件中创建另一个相同类的实例。我不希望在这里遇到这种情况,因为你从segue直接获得secView
,但是值得思考。
答
有两个视图:view1和view2。
- 添加view2.h文件中的视图2 view1.h
- 初始化对象并设置其变量。
我确实有过这些行..我只是忘了在这里输入它们,让我编辑! – Cloaky 2011-12-22 19:30:58