这是我到目前为止所得到的。 mainview.m
-(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是null ...我做错了什么?
答案 0 :(得分:1)
您是否尝试将ext转换为属性?我的理解是“点”符号本质上将您的代码转换为
[secView setExt:@".com"]
所以将SecondView.h转换为
@interface secondView : UIViewController
@property (nonatomic, copy) NSString *ext;
@end
不要忘记在.m文件中对它进行@synthesize
答案 1 :(得分:1)
检查以下内容:
@synthesize ext;
在SecondView.m prepareForSegue:sender
方法调用SecondView(即代码中的其他位置pushViewController:animated
不会调用SecondView。)答案 2 :(得分:1)
在该行放置一个断点:
secView.ext = @".com";
并确保在分配后正确设置ext
ivar。如果不是,您可能会指定访问者在@synthesize
ext
指令中使用不同的ivar,或者您可能提供了一个未正确设置ivar的setter -setExt:
如果在分配后正确设置了ext
,那么您可能有两个不同的secondView
实例。当人们使用.xib文件时,过去常常发生这种情况 - 他们在代码中创建一个视图控制器,并在.xib文件中创建另一个相同类的实例。我不希望这是因为你从segue直接得到secView
,但值得思考。
答案 3 :(得分:1)
有两种观点:view1和view2。