jjzjj

swift - 发送数据到另一个 View : can't unwrap option

coder 2023-09-10 原文

我知道这必须是一个简单的修复,但似乎无法理解为什么我的代码不起作用。基本上我试图将一个值从第一个 View 中的文本字段发送到第二个 View 的标签。

ViewController.swift

@IBOutlet var Text1st: UITextField
@IBAction func Goto2ndView(sender: AnyObject) {


    let view2 = self.storyboard.instantiateViewControllerWithIdentifier("view2") as MyView2
    //view2.Label2nd.text=text;
    self.navigationController.pushViewController(view2, animated: true)

}

MyView2.swift

@IBOutlet var Label2nd: UILabel

override func viewDidLoad() {
    super.viewDidLoad()
    var VC = ViewController()

    var string = (VC.Text1st.text) //it doesn't like this, I get a 'Can't unwrap Option.. error'
    println(string)
}

--------从 (drewag) 编辑更新的代码--------

ViewController.swift

    let text = "text"
    var sendString = Text1st.text
    println(sendString) //successfully print it out.
    let view2 = self.storyboard.instantiateViewControllerWithIdentifier("view2") as MyView2
    view2.Label2nd.text=sendString;
    self.navigationController.pushViewController(view2, animated: true)

MyView2.swift

@IBOutlet var Label2nd: UILabel

override func viewDidLoad() {
    super.viewDidLoad()
    var VC = ViewController()

    var string = self.Label2nd.text
    println(string) //still getting the error of an unwrap optional.none

}

最佳答案

var VC = ViewController() 创建一个新的 ViewController 实例。除非有默认值,否则您不会从 VC.Text1st.text 中获取任何值。你真的应该在你的第二个 View Controller 上使用一个字符串变量来将数据传递给它。

此外,关于常见格式的注释:

  1. 类名应以大写字母开头(如您所用)
  2. 方法/函数名称应以小写字母开头
  3. UIViewController 子类的名称中应包含“Controller”,否则,它看起来像是 UIView 的子类,而 UIView 是完全不同级别的 Model View Controller (所有 UIKit 和 Cocoa 框架的架构)

编辑:

下面是一些示例代码:

class ViewController1 : UIViewController {
    ...

    func goToSecondView() {
        var viewController = ViewController2()
        viewController.myString = "Some String"
        self.navigationController.pushViewController(viewController, animated: true)
    }
}

class ViewController2 : UIViewController {
    var myString : String?

    func methodToUseMyString() {
        if let string = self.myString {
            println(string)
        }
    }

    ...
}

请注意,我不是使用 Storyboard创建 ViewController2。我个人更喜欢避免 Storyboard,因为它们不能很好地扩展,而且我发现编辑它们非常麻烦。如果愿意,您当然可以更改它以在 Storyboard 之外创建 View Controller 。

关于swift - 发送数据到另一个 View : can't unwrap option,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336209/

有关swift - 发送数据到另一个 View : can't unwrap option的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  5. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  6. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

  7. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  8. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  9. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  10. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

随机推荐