【问题标题】:Pass data through views Xcode 4.2 storyboarding通过视图传递数据 Xcode 4.2 故事板
【发布时间】:2011-12-29 07:42:31
【问题描述】:

我的项目基本上是一个性能车应用程序,使用arc4rand() 来确定接下来会出现哪辆车。 我做了一个picture 来解释我需要它做什么。

我的 .h 代码

 @interface BMW : UIViewController {

  IBOutlet UIImageView *view;

  IBOutlet UILabel *label;

}

-(IBAction)random;

@end

我的 .m 代码

-(IBAction)random {
   int image = arc4random() % 1;
   switch (image) {
   case 0:
       block.image = [UIImage imageNamed:@"m3.jpg"];
       label.text = @"BMW m3" ;
       break;

   default:
       break;
  }

我怎样才能将标签和图片转移到第二个视图? 我正在使用 Xcode 4.2.1 和故事板

【问题讨论】:

    标签: ios objective-c uistoryboard


    【解决方案1】:

    一种可能性:在第二个视图控制器中制作标签和图片 ivars 并像这样设置它们 在newController.h

    @interface newController : UIViewController 
    @property (strong, nonatomic) NSString *labelText;
    @property (strong, nonatomic) UILabel *label;
    @property (strong, nonatomic) UIImage *image;
    @end
    

    newController.m

    @implementation newController 
    @synthesize labelText, image, label;
    
    - (void)viewWillAppear
    {
       label.text = labelText;
    }
    @end
    

    将 IB/Xcode 中的 segue 标识符设置为 pushNewViewController 并在代码中添加 prepareForSegue:

    #import "NewController.h"
    ...
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
        if ([segue.identifier isEqualToString:@"pushNewController"]) {
            [segue.destinationViewController setLabelText:label.text];
            [segue.destinationViewController setImage:block.image];
        }
    }
    

    如果您想了解更多关于 UIViewControllers 和故事板的信息,我建议您查看当前的 Stanford CS 193P 课程,该课程完全适用于 iOS 5

    【讨论】:

    • 会是正确的,除了问题是使用故事板,所以你的最后一段代码应该在 prepareForSegue 方法中,你会从 segue.destinationViewController 获得新的视图控制器
    • 哦,由于未加载视图,此时标签也不存在,因此您必须传递一个字符串并在 viewWillAppear 中填充标签(烦人!)
    • @jrturton 你对 prepareForSegue 的看法是正确的——刚起床;)——所以改变了代码。确定不能设置标签文字?
    • 非常肯定,我记得不得不改变它。对象已创建,但视图尚未加载,因此 nib 中的项目全部为零。正是因为这个原因,当时我的想法似乎是错误的。
    • 我试过了,但无法让它工作!我是否必须将新视图设置为自定义类 -> NewController ?和 prepareForSegue 部分,它进入什么文件?谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-12-12
    • 2011-12-07
    • 2012-02-20
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多