如何以编程方式实例化新的视图控制器

2024-04-13

我有一个带有两个 UIButtons 和 UIlabels 的 ViewController。

为了制作类似的 ViewController,我想以编程方式实例化一个新的视图控制器 像这样。

let vc = storyboard.instantiateViewControllerWithIdentifier("Main")

然后导航到视图控制器,如下所示:

navigationcontroller?.pushViewController(vc, animated: true)

我已将 StoryBoard ID 设置为"Main",但是我不知道在哪里可以编写这些代码。

    class ViewController: UIViewController, AVAudioPlayerDelegate {

    let url1 = Bundle.main.bundleURL.appendingPathComponent("music1.mp3")
    let url2 = Bundle.main.bundleURL.appendingPathComponent("music2.mp3")

        @IBOutlet weak var label1: UILabel!
        @IBOutlet weak var label2: UILabel!

        @IBOutlet weak var yourButton1: customButton!
        @IBOutlet weak var yourButton2: customButton!

        override func viewDidLoad() {
            super.viewDidLoad()

            label1.text = "Hello1"
            label2.text = "Hello2"
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }

   func player(url: URL) {
        do {
            try player = AVAudioPlayer(contentsOf:url)
            player.play()

        } catch {
            print(error)
        }
    }

   @IBAction func pushButton1(sender: UIButton) {
       player(url: url1)
    }

    @IBAction func pushButton2(sender: UIButton) {
       player(url: url2)
    }
        }

表视图

   class SecondTableViewController: UITableViewController {

    var names = [String]()
    var identities = [String]()

    override func viewDidLoad() {

        names = ["name1","name2","name3","name4"]
        identities = ["Main","Main2","Main3","Main4"]

    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return names.count
    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")

        let label1 = cell?.viewWithTag(1) as! UILabel
        label1.text = "\(names[indexPath.row])"

        return cell!
    }


    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let vcName = identities[indexPath.row]
        let ViewController = storyboard?.instantiateViewController(withIdentifier: vcName)
        self.navigationController?.pushViewController(ViewController!, animated: true)
    }


}

您需要为 Storyboard 中的视图控制器设置 Storyboard ID 值并在此处使用它:

let storyboard = UIStoryboard(name: "StoryboardName", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "RegistrationController")
navigationcontroller?.pushViewController(vc, animated: true)

Edit:

var urls1 = [String]()
var urls2 = [String]()

override func viewDidLoad() {

    names = ["name1","name2","name3","name4"]
    identities = ["A","B","C","D"]
    urls1 = ["url1","url2" ....]
    urls2 = ["url1","url2" ....]
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let url1 = urls1[indexPath.row]
    let url2 = urls2[indexPath.row]

//let ViewController = storyboard?.instantiateViewController(withIdentifier: vcName) this is wrong you only have one viewcontroller on storyboard and its storyboard id is fixed.

    let viewController: ViewController  = storyboard?.instantiateViewController(withIdentifier: "StoryboardID") as! ViewController

    viewController.url1 = url1
    viewController.url2 = url2

    self.navigationController?.pushViewController(ViewController!, animated: true)
}

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

如何以编程方式实例化新的视图控制器 的相关文章

  • ios7 navigationController PushViewController 动画错误

    看来我在 navigationController PushViewController 方法中发现了一个错误 为了重新创建它 我采用了示例主详细信息项目并对 didSelectRow method void tableView UITab
  • iOS - 当 UIView 移动时将 UITextField 移动到不同的位置

    我有一个主 UIView 它通过开关向上移动 我有这个工作 那里没有问题 现在 UIView 当向下时 占据屏幕的大约一半 当它向上推时 它会显示底部 40px 在 UIView 中 当它处于向下状态时 它有一个 UITextField 并
  • 从命令行调试 iOS 应用程序构建

    我正在通过命令行构建 iOS 应用程序 但在调试它时遇到问题 如果我使用 XCode 进行构建 它会让我在设备上 构建和调试 而不会出现任何问题 但现在 我不知道如何使用 gdb 在设备上启动它并逐步执行它 如果我尝试 添加自定义目标 可执
  • 在带有 Storyboard 的 XCode 4 中以模态方式推送视图时,出现“对开始/结束外观转换的不平衡调用”警告

    在网上进行了一些研究但没有成功后 我来这里向您询问有关我的警告的问题 实际上 我有一个带有导航控制器的视图 V1 我想在 V1 完成加载时推送模态视图 V2 所以我用performSegueWithIdentifier方法 我正在使用故事板
  • 如何防止Apple Watch进入睡眠状态?

    我们正在开发一个 Apple Watch 项目 但如果不被打扰 手表就会进入睡眠状态 有什么办法可以阻止它进入睡眠状态吗 据我所知和有关该主题的其他搜索 目前还没有api可通过编程方式启用或禁用 Apple Watch 的睡眠模式
  • 添加自定义过渡会导致 xib 加载错误的屏幕尺寸

    我正在尝试向具有 xib 的 UIViewController 添加自定义过渡 我尝试了几种方法 但它们都有相同的问题 视图显示的屏幕尺寸错误 我当前的示例基于以下教程 使用 Swift 在 iOS 中自定义 UIViewControlle
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 以编程方式触发iOS摇动事件

    如何以编程方式触发 iOS 中的摇动事件 我尝试过以下方法 但它总是崩溃 void shake NSLog TEST UIMotionEventProxy m NSClassFromString UIMotionEvent alloc in
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 我怎样才能勾勒出文本字体?

    我想在边框 轮廓 中显示另一种颜色的文本 我正在尝试使用在 MapOverlayView 中显示文本 text drawAtPoint CGPointMake 0 30 withFont UIFont fontWithName Helvet
  • 在 Swift 中使用 CommonCrypto 解密时出现问题

    我在一家Swift only加密 解密Extension for String and NSData 并且 crypt 部分的工作基于 Zaph 在链接问题中提供的答案 在 Swift 中使用 CCCrypt CommonCrypt 时出现
  • 频繁绘制 CGPath 时的性能

    我正在开发一个将数据可视化为折线图的 iOS 应用程序 该图被绘制为CGPath在全屏自定义中UIView最多包含 320 个数据点 数据经常更新 图表需要相应地重新绘制 刷新率为 10 秒就很好了 到目前为止很容易 然而 我的方法似乎需要
  • 致命错误:在字典中发现“地理编码地标”类型的重复键。 (Mapbox 地理编码器)

    我引用 这通常意味着要么该类型违反了 Hashable 的要求 要么此类字典的成员在插入后发生了变化 我正在使用 Mapbox Geocoder 当发生此运行时错误时 我的 XCode 将我带到线程 1 0 swift runtime on
  • iOS 循环对象的属性并添加操作

    我有一个具有几个类似属性的类 UISliders 我想添加用户开始和结束使用每个滑块时的操作 每个滑块都将链接到同一个选择器 因此我考虑只是迭代它们 而不是编写 10 个几乎相同的代码块 问题是 最有效的方法是什么 我尝试过这样的事情 在运
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • 在现有 iOS 应用程序中集成 React-native(0.40.0) 后找不到 Yoga/Yoga.h 头文件

    在我的 Swift iOS 应用程序中集成 React Native 后 我无法构建 yoga Yoga h file cannot be found 我已经浏览了文档 查看了react native github页面 检查了类似问题的SO
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐

  • Python 3.2 有等效的 PyMongo 吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试安装pymongo通过 Python 3 2 到我的 Windows 机器简易安装 却发现由于与Python 3 2不兼容而无法安装
  • 什么是 std::false_type 或 std::true_type?

    我看到它的用法如下 template
  • 何时使用 RecoveryCallback 与 KafkaListenerErrorHandler

    我想了解什么时候应该使用 org springframework retry RecoveryCallback 和 org springframework kafka listener KafkaListenerErrorHandler 截
  • 减少 Docker 容器大小

    我正在关注有关 Docker 的在线教程 作者举了这样一个例子 FROM busybox RUN dd if dev zero of tmp test1 bs 1M count 50 RUN dd if dev zero of tmp te
  • 引用对象的 OQL 语法?

    我在中找到所需的对象visualvm v1 3 8 filter heap objects java lang String hibernate ejb naming it toString 它们显示为 java lang String 3
  • 查询Google/Youtube API剩余配额

    有没有办法通过 Google Youtube API 以编程方式查询当天的剩余配额 None
  • 如何将 CMake 输出保存到文件?

    我通常可以通过以下方式保存 bash 命令的输出 gt gt output file txt 但是当我执行时cmake输出仍然发送到屏幕而不是预期的输出文件 cmake D CMAKE BUILD TYPE RELEASE D CMAKE
  • 如何在Javascript中确定数字是奇数还是偶数[重复]

    这个问题在这里已经有答案了 谁能指点我一些代码来确定 JavaScript 中的数字是偶数还是奇数 我正在尝试做类似的事情 if intellect is even var magic1 intellect 2 else var magic
  • 设计基于 Firebase 的可扩展 Feed 模型

    问题 如何设计一个以 Firebase 作为后端 可扩展的社交网络 提要 可能的答案 MVP 解决方案是设计一个feedsroot 子级 每个用户一个 并在每个关注者的提要中附加来自关注用户的任何新帖子 users user1 name b
  • 重新采样栅格

    我正在尝试将高分辨率 25 米 和分类数据 1 到 13 的森林覆盖栅格重新采样为新的RasterLayer分辨率较低 约 1 公里 我的想法是将森林覆盖数据与其他较低分辨率的栅格数据结合起来 I tried raster resample
  • 区分 8 种颜色中的一种最准确的方法是什么?

    想象一下我们如何使用一些基本颜色 RED Color 196 2 51 RED ORANGE Color 255 165 0 ORANGE YELLOW Color 255 205 0 YELLOW GREEN Color 0 128 0
  • img src 属性中使用 javascript 进行 XSS 攻击

    一些较旧的浏览器容易受到 XSS 攻击 img src 当前版本的 IE FF Chrome 不是 我很好奇是否有浏览器容易受到类似的攻击 img src somefile js or 或其他类似的地方 somefile js 包含一些恶意
  • Jenkins Git Publisher 标签未检测到环境变量

    在我的 Jenkins bash 脚本中 我导出以下环境变量 export TAG NAME v LIVE VERSION LIVE BUILD 在 Git 发布者部分中 我尝试创建一个标签 其标签名称字段填充为 TAG NAME 但它试图
  • atol() 与 strtol()

    atol 与 strtol 有什么区别 根据他们的手册页 它们似乎具有相同的效果以及匹配的参数 long atol const char nptr long int strtol const char nptr char endptr in
  • GetAssemblyIdentity 版本始终为 1.0.0.0

    尽管文件版本和产品版本均在 DLL 中定义 并且当我在 Windows 7 中查看其属性时正确显示 但版本为 1 0 0 0 有什么建议吗
  • 更改输入状态会延迟一个字符(useState 挂钩)

    我正在尝试在我的社交网络中实现用户个人资料的即时搜索 它似乎有效 但在输入更改时设置状态 使用挂钩 会导致延迟一个字符 我研究了一下 发现状态延迟的问题可以通过在 setState 中使用回调函数来解决 但是 useState 不支持这一点
  • 获取特定应用程序的屏幕截图

    我知道我可以使用 Graphics CopyFromScreen 获取整个屏幕的屏幕截图 但是 如果我只想要特定应用程序的屏幕截图怎么办 PrintWindow win32 api 将捕获窗口位图 即使该窗口被其他窗口覆盖或位于屏幕外 Dl
  • 什么是“柯里化”?

    我在几篇文章和博客中看到了对柯里化函数的引用 但我找不到一个很好的解释 或者至少是一个有意义的解释 柯里化是指将一个接受多个参数的函数分解为一系列函数 每个函数只接受一个参数 这是一个 JavaScript 示例 function add
  • jquery遍历新创建的元素

    我正在尝试在表中添加新行 并将它们保存到数据库中 首先 我使用 append 在表中追加行 tablename append tr td newly added row td tr 附加功能运行良好 我的页面显示了正确的结果 但是 我无法选
  • 如何以编程方式实例化新的视图控制器

    我有一个带有两个 UIButtons 和 UIlabels 的 ViewController 为了制作类似的 ViewController 我想以编程方式实例化一个新的视图控制器 像这样 let vc storyboard instanti