将数据从一个视图传递到另一个视图(故事板、iOS)

将数据从一个视图传递到另一个视图(故事板、iOS),ios,objective-c,storyboard,Ios,Objective C,Storyboard,这就是我目前得到的。 mainview.m -(void)prepareForSegue:(UIStoryboardSegue *)segue sender(id)sender { secondView *secView = [segue destinationViewController] secView.ext = @".com"; } secondView.h @interface secondView : UIViewController { NSString *ext; } @pr

这就是我目前得到的。 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。。。我做错了什么?

您是否尝试将ext转换为属性?我的理解是“点”符号本质上是将代码转换为

[secView setExt:@".com"]
因此,将SecondView.h转换为

@interface secondView : UIViewController

@property (nonatomic, copy) NSString *ext;

@end

别忘了在你的.m文件中@synthesis它

你试过把ext变成一个属性吗?我的理解是“点”符号本质上是将代码转换为

[secView setExt:@".com"]
因此,将SecondView.h转换为

@interface secondView : UIViewController

@property (nonatomic, copy) NSString *ext;

@end
不要忘记在.m文件中@synthesis它

检查以下内容:

  • 确保
    @ext位于SecondView.m中
  • 在故事板中,您是否正确链接了该序列
  • 在Stodyboard中,表示SecondView的viewController是否定义为SecondView类
  • 确保您正在通过
    prepareforsgue:sender
    方法调用SecondView(即,SecondView不会被代码中的其他地方调用
    pushViewController:animated
  • 检查以下各项:

  • 确保
    @ext位于SecondView.m中
  • 在故事板中,您是否正确链接了该序列
  • 在Stodyboard中,表示SecondView的viewController是否定义为SecondView类
  • 确保您正在通过
    prepareforsgue:sender
    方法调用SecondView(即,SecondView不会被代码中的其他地方调用
    pushViewController:animated

  • 在行上放置断点:

    secView.ext = @".com";
    
    并确保分配后正确设置了
    ext
    ivar。如果不是,您可能指定访问者在
    @synthesis
    指令中为
    ext
    使用不同的ivar,或者您可能提供了一个setter
    -setExt:
    未正确设置ivar


    如果赋值后正确设置了
    ext
    ,则可能有两个不同的
    secondView
    实例。当人们使用.xib文件时,经常会发生这种情况——他们会在代码中创建一个视图控制器,并在.xib文件中创建同一类的另一个实例。我不希望出现这种情况,因为您直接从segue获取
    secView
    ,但这值得考虑。

    在线路上设置一个断点:

    secView.ext = @".com";
    
    并确保分配后正确设置了
    ext
    ivar。如果不是,您可能指定访问者在
    @synthesis
    指令中为
    ext
    使用不同的ivar,或者您可能提供了一个setter
    -setExt:
    未正确设置ivar


    如果赋值后正确设置了
    ext
    ,则可能有两个不同的
    secondView
    实例。当人们使用.xib文件时,经常会发生这种情况——他们会在代码中创建一个视图控制器,并在.xib文件中创建同一类的另一个实例。我不希望出现这种情况,因为您直接从segue获得了
    secView
    ,但值得考虑。

    有两种视图:view1和view2

    • 在view1.h中添加view2.h文件
    • 初始化view2的对象并设置其变量

    有两个视图:视图1和视图2

    • 在view1.h中添加view2.h文件
    • 初始化view2的对象并设置其变量

    我实际上有这些台词。。我只是忘了在这里输入,让我来编辑!实际上我有那些台词。。我只是忘了在这里输入,让我来编辑!我刚刚发现了问题。。我让mainView中的segue指向选项卡栏控制器,而不是导致destinationViewController返回其他内容的Tab1(第二个视图)!我想解决这个问题的办法是将controller指定为您期望的类型。这会让你知道你没有铸造正确的类型。我刚刚发现问题。。我让mainView中的segue指向选项卡栏控制器,而不是导致destinationViewController返回其他内容的Tab1(第二个视图)!我想解决这个问题的办法是将controller指定为您期望的类型。这会让你知道你没有铸造正确的类型。