Swift:以编程方式导航到 ViewController 并传递数据

2024-04-22

我最近开始学习swift,到目前为止还不错。目前,我在尝试在视图控制器之间传递数据时遇到问题。我设法弄清楚如何使用导航控制器以编程方式在两个视图控制器之间导航。唯一的问题是现在我很难弄清楚如何将用户输入的三个字符串(对于 json api)传递到下一个视图。

这是我目前的尝试。任何帮助深表感谢!

视图控制器:

/* Get the status code of the connection attempt */
func connection(connection:NSURLConnection, didReceiveResponse response: NSURLResponse){

    let status = (response as! NSHTTPURLResponse).statusCode
    //println("status code is \(status)")

    if(status == 200){

        var next = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
        self.presentViewController(next, animated: false, completion: nil)
    }
    else{

        RKDropdownAlert.title("Error", message:"Please enter valid credentials.", backgroundColor:UIColor.redColor(), textColor:UIColor.whiteColor(), time:3)
        drawErrorBorder(usernameField);
        usernameField.text = "";
        drawErrorBorder(passwordField);
        passwordField.text = "";
    }
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

    let navigationController = segue.destinationViewController as! UINavigationController
    let newProjectVC = navigationController.topViewController as! SecondViewController
    newProjectVC.ip = ipAddressField.text
    newProjectVC.username = usernameField.text
    newProjectVC.password = passwordField.text
}

第二个视图控制器:

import UIKit

class SecondViewController: UIViewController {

var ip:NSString!
var username:NSString!
var password:NSString!

override func viewDidLoad() {
    super.viewDidLoad()

    println("\(ip):\(username):\(password)")
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

方法prepareForSegue当应用程序的故事板执行 segue(您使用 Interface Builder 在故事板中创建的连接)时调用。在上面的代码中,尽管您自己呈现控制器presentViewController。在这种情况下,prepareForSegue没有被解雇。您可以在展示控制器之前进行设置:

let next = self.storyboard?.instantiateViewControllerWithIdentifier("SecondViewController") as! SecondViewController
next.ip = ipAddressField.text
next.username = usernameField.text
next.password = passwordField.text
self.presentViewController(next, animated: false, completion: nil)

您可以阅读有关 segue 的更多信息here https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/chapters/StoryboardSegue.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift:以编程方式导航到 ViewController 并传递数据 的相关文章

随机推荐

  • 应用程序在 Mac OS X 上使用 Apple 的 Java 6 而不是 Oracle 的 Java 7?

    我正在使用安装了 Oracle Java 7 的 Mac OS X 测试我当前的应用程序 它使用的是 Apple 的 Java 6 而不是 Oracle 的 Java 7 系统默认输出为java version正在显示7 我尝试了不同网站中
  • 如何比较两个查询?

    当两个查询 X 和 Y 在小案例场景中花费几乎相同的时间时 如何比较两个查询 X 和 Y 并说 X 比 Y 更好 问题是我有两个查询应该在一个非常大的数据库上运行 所以运行和评估不是一个很好的选择 因此 我们创建了一个小型数据库来执行一些测
  • 两个大整数相乘是否需要强制转换?

    假设您有两个大整数并且您想要将它们相乘 int a 150000 int b 200000 Operation 1 Incorrect Overflows long result a b Operation 2 Correct long r
  • Visual Studio 2010环境变量

    我在 Windows 中设置了一个名为 SDK 的环境变量 我可以在 csproj 文件中以某种方式使用它吗 就像是
  • 如何完全摆脱 Activity 的 GUI(避免黑屏)

    我正在尝试编写一个非常简单的应用程序 它只执行一个非常简单的非 GUI 操作 然后显示一条短消息 使用 toast 在屏幕上已有的内容 例如主屏幕 之上 然后完成 就这样 这几乎有效 但应用程序启动后我仍然会出现短暂的黑屏 然后返回主屏幕
  • 在运行时访问注释

    我怎样才能访问main无论check in the Sample类是真还是假 我应该在主类中写什么 package annotation import java lang annotation Retention import java l
  • 具有多个控件的列表框

    有人可以帮我创建一个带有复选框和星级控件水平对齐的列表框吗 我想要使 用 C 和 XAML 的 WP7 您需要编写一个自定义列表 这里是一个示例 您需要包含控制工具包 xmlns ControlsToolkit clr namespace
  • 使用亚音速交易

    在我的网络应用程序中 我必须对用户操作进行审核 因此 每当用户执行操作时 我都会更新执行操作的对象并保留该操作的审核跟踪 现在 如果我先修改对象 然后更新审计跟踪 但审计跟踪失败了 那么怎么办 显然我需要回滚对已修改对象的更改 我可以在简单
  • 如何在 Qt 5.3 中将 QByteArray 转换为字符串?

    我正在使用一些函数来转换QVector s to QByteArray s 例如 QByteArray Serialize serialize QVector
  • 错误:MyDocument.getInitialProps()”应该解析为带有“html”属性的对象,该属性设置有有效的 html 字符串(在 document.js 中)

    现在我正在用react nodejs nextserver express制作一个迷你项目 发生意外错误 我不知道为什么 document js中会出现错误 如果您知道原因 请告诉我 谢谢 error Error MyDocument ge
  • MVVM 的 ReSharper 警告

    当我使用 WPF 实现 MVVM 模式时 我发现 ReSharper 经常警告我某些属性从未在我的 ViewModel 中使用 问题是它们正在被使用 但仅由数据绑定系统使用 有其他人遇到过这种烦恼吗 有没有办法帮助 ReSharper 意识
  • 当我从服务中调用函数时,“this”未定义

    我的电话上有这个电话component page this timerSessionService startTimer this finish bind this this onSynchronice 嗯 它与this finish 但是
  • 如何禁用Chrome中弹出窗口的位置栏和滚动条?

    对于以下代码 宽度和高度在 Chrome 中有效 但位置和滚动条不起作用 请指导 a href Click Here a 出于安全原因 Chrome 不允许您这样做 隐藏地址栏可以更轻松地假装您是某银行网站 http en wikipedi
  • 日期格式转换 %B %Y

    我们能否以某种方式转换日期 例如 November 2017 December 2017 迄今为止 我尝试导入 csv 数据 但收到了因子列 我尝试了以下代码 但没有成功 as POSIXct as character dat Date f
  • C++ 声明中的显式限定

    当第一个声明被注释掉时 以下命名空间定义无法编译 如果第一个声明foo未注释 那么它编译得很好 namespace Y void foo void Y foo 标准中的相关部分 8 3 1 说 当 declarator id 合格时 声明应
  • Azure Devops Artifacts:禁用从上游源保存包

    我有一个 npm 包的提要 其中 npmjs 设置为上游源 默认情况下 当您尝试使用其他依赖项安装上传的自定义包时 这些依赖项包会自动保存在您的源中 以节省将来安装的时间 然而 我不想要它 并希望我的提要仅托管我自己的软件包 并且每次安装时
  • Android 11 上不再支持发送短信的意图

    当以 Android 11 为目标并使用 Android 11 设备 物理设备或模拟器 时 以下方法不再适用于发送短信 更改目标 SDK 版本或设备 SDK 版本即可使其正常工作 logcat 根本没有说什么 知道为什么它不起作用吗 pri
  • Shopify 应用桥会话令牌在使用 vue.js 和 Axios 时遇到一些问题?

    我在制作 Shopify 应用程序 Vue js 作为前端和 laravel 作为后端时遇到一些问题 我正在使用 app bridge 生成会话令牌 它生成会话令牌正常 并且工作正常 直到重新生成会话令牌 重新生成会话令牌后 它会响应 会话
  • 来自 gluUnProject 的 IllegalArgumentException

    我收到此错误消息 08 30 19 20 17 774 ERROR AndroidRuntime 4681 FATAL EXCEPTION GLThread 9 08 30 19 20 17 774 ERROR AndroidRuntime
  • Swift:以编程方式导航到 ViewController 并传递数据

    我最近开始学习swift 到目前为止还不错 目前 我在尝试在视图控制器之间传递数据时遇到问题 我设法弄清楚如何使用导航控制器以编程方式在两个视图控制器之间导航 唯一的问题是现在我很难弄清楚如何将用户输入的三个字符串 对于 json api