首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >准备好多个ViewControllers不能100%工作的问题

准备好多个ViewControllers不能100%工作的问题
EN

Stack Overflow用户
提问于 2016-12-21 08:28:46
回答 1查看 60关注 0票数 0

有4个视图控制器: raceViewController raceInfoViewController abilityCalcViewController abilityFinalViewController

快速概述应用程序的工作原理。首先,用户在abilityCalcViewController中启动,然后更新他们的统计数据,然后单击Select,然后再转到raceViewController。这里有两个按钮,一个指向raceInfoViewController,另一个指向abilityFinalViewController。每个不同的ViewControllers之间都有自己的一组信息要传递。

我的代码是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
    {
        if segue.identifier == "abilityFinalViewController"
        {
            let destFinalViewController: abilityFinalViewController = segue.destination as! abilityFinalViewController

            destFinalViewController.strStatScore = strStatScore
        }
        else if segue.identifier == "raceInfoViewController"
        {
            let destViewController: raceInfoViewController = segue.destination as! raceInfoViewController
            // Dwarf
            if raceTable.indexPathForSelectedRow == [0,0]
            {
                print(raceTable.indexPathForSelectedRow ?? 0)
                destViewController.raceName = races[0]
                destViewController.raceStat = stats[0]
            }

            // Elf
            else if raceTable.indexPathForSelectedRow == [0,1]
            {
                destViewController.raceName = races[1]
                destViewController.raceStat = stats[1]
            }

            // Gnome
            else if raceTable.indexPathForSelectedRow == [0,2]
            {
                destViewController.raceName = races[2]
                destViewController.raceStat = stats[2]
            }

            // Half Elf
            else if raceTable.indexPathForSelectedRow == [0,3]
            {
                destViewController.raceName = races[3]
                destViewController.raceStat = stats[3]
            }

            // Half-Orc
            else if raceTable.indexPathForSelectedRow == [0,4]
            {
                destViewController.raceName = races[4]
                destViewController.raceStat = stats[4]
            }

            // Halfling
            else if raceTable.indexPathForSelectedRow == [0,5]
            {
                destViewController.raceName = races[5]
                destViewController.raceStat = stats[5]
            }

            // Human
            else if raceTable.indexPathForSelectedRow == [0,6]
            {
                destViewController.raceName = races[6]
                destViewController.raceStat = stats[6]
            }

            // Ifrit
            else if raceTable.indexPathForSelectedRow == [0,7]
            {
                destViewController.raceName = races[7]
                destViewController.raceStat = stats[7]
            }

            // Oread
            else if raceTable.indexPathForSelectedRow == [0,8]
            {
                destViewController.raceName = races[8]
                destViewController.raceStat = stats[8]
            }

            // Sylph
            else if raceTable.indexPathForSelectedRow == [0,9]
            {
                destViewController.raceName = races[9]
                destViewController.raceStat = stats[9]
            }

            // Tengu
            else if raceTable.indexPathForSelectedRow == [0,10]
            {
                destViewController.raceName = races[10]
                destViewController.raceStat = stats[10]
            }

            // Undine
            else if raceTable.indexPathForSelectedRow == [0,11]
            {
                destViewController.raceName = races[11]
                destViewController.raceStat = stats[11]
            }
        }
    }

我的问题是,当我单击导致abilityFinalViewController的按钮或指向raceInfoViewController的按钮时,它会转换,但是没有传递任何数据。因此,当到达下一个目的地时,destFinalViewController.strStatScore = strStatScore似乎是空白的。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-21 12:34:56

注意,基于segue标识符决定要做什么的prepareForSegue代码是脆弱的。如果您忘记设置标识符,或者在标识符中有一个错误,则它不起作用。

在Swift中,我更喜欢使用基于目标视图控制器类的开关语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    switch segue.destinationViewController {

    case let miniCarContainerViewController as MiniCartConatinerViewController:
        //Code to configure MiniCartConatinerViewController
        print("Destination is class MiniCartConatinerViewController")

    case let addOnsItemViewController as AddonsItemViewController:
        //Code to configure AddonsItemViewController
        print("Destination is class MiniCartConatinerViewController")

    default:
        print("Destination is unknown class!")
        break
    }
}

case let语法具有双重功能,因为它根据目标视图控制器的类将局部变量强制转换为正确的类型。

顺便说一句,类名和类型名应该总是以Swift大写字母开头。变量名应以小写字母开头。因此,您的abilityFinalViewController类应该命名为AbilityFinalViewControllerraceInfoViewController应该命名为RaceInfoViewController

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41267524

复制
相关文章
OGG的PURGEOLDEXTRACTS不能工作问题的解决
PURGEOLDEXTRACTS /ogg/dirdat/horcl/hz*,USECHECKPOINTS,MINKEEPDAYS 2
星哥玩云
2022/08/17
8420
准备工作
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
Miss_林炎
2023/04/11
2910
准备工作
分页-准备工作
第N页/共M页 首页 上一页 1 2 3 4 5 6 7 8 9 10下一页 尾页
星哥玩云
2022/09/14
2190
分页-准备工作
Python入门的准备工作
Python是近几年很火的一款软件,斑点鱼在刚开始找工作时就觉得Python很有用,所以在Codecademy和慕课网两个网站,把Python的框架都学了一遍。这对求职来说是挺有用的,可以多说会一门软件对吧~但是这对于实际工作应用来说还远远不够,可以说学了框架还是不会用PYTHON,因为斑点鱼当时只停留在网页上学习写代码,没有本地下载PYTHON,那样的话,是体会不到编程环境的困难之处滴~~~~ 当斑点鱼工作以后,尝试使用python2和python3时(因为总有模块是不同的python版本才有),老是
企鹅号小编
2018/02/23
9360
Python入门的准备工作
17.2 准备工作
mysql安装总结 mysql主从准备工作: 准备两台机器,每台机器安装msyql服务,并启动mysql服务 mysql详细安装 ---- 首先下载二进制免编译的包,下载到/usr/local/src/目录下 解压压缩包 解压完之后,把解压出来的目录放到 /usr/local/mysql/ 目录下 注意点: 首先检查 /usr/local/mysql/ 目录是否存在 若是这个目录存在,首先把这个目录改个名字,或者把目录下的内容删除 然后把解压出来的目录放到 /usr/local/mysql/ 目录下面
运维小白
2018/02/07
4370
MySql准备工作
1.linux 下启动mysql 服务 sudo service mysql start 2.登录 mysql -u用户 -p密码 3.显示库 show databases; 4.使用库 use 库名; 5.查看表 show tables;
拾点阳光
2018/05/10
5700
Hadoop实战之前的准备工作
俗语说,“磨刀不误砍柴工”。Hadoop操作前的准备工作可以加快Hadoop的操作与应用。
星哥玩云
2022/06/30
2860
准备工作--ffmpeg编译
为了能更好的学习和运用ffmpeg, 建议下载ffmpeg源码自己编译.这里的编译方法基于ubuntu16.04环境.直接按照编译FFmpeg来做可能会碰到一些错误, 我将自己编译碰到的错误记录在最后面. 我自己编译的工程已经传到github上 https://github.com/yizhongliu/ffmpegForAndroid
小蚂蚁与大象
2020/04/17
1.5K0
准备工作与简介
C# 可以说是当今所有开发语言中最好的开发语言,微软会每隔一段时间就推出一个新的 .NET Framework 框架,随着每次新框架的推出 C# 语言也会增加新的功能。而且每次更新微软都会为 C# 提供更多的向后兼容特性,因而 C# 越来越庞大越来越复杂,尤其是 C# 的多线程编程,微软提供了大量的方法方式供我们选择,但是这又导致部分开发人员在面对一些场景时会纠结到底选择哪种多线程方式,对于刚刚入门的开发人员来说会用一种方式匹配所有场景。如果要解决上述问题,我们应该深入理解 C# 多线程框架,那么这个专题将带领大家来深入理解 C# 多线程框架。 这个专题将以简单明了的语言讲解多线程,我们首先会从线程基础开始讲解,然后讲解线程的同步和线程池的知识,最后会深入讲解 C# 多线程高级内容。本专题面向对象是只有少量或没有多线程背景的开发人员和初学者。示例代码地址我会在每篇文章的结尾放出,并且会在每篇文章的结尾放出练习题,练习题答案将会在第二篇文章结尾放出答案链接。
喵叔
2020/09/08
4890
准备工作与简介
云迁移工作的准备与实施
尽管在进行云迁移之前可能需要快速采取行动,但现在应该是进行分析的时候了。组织需要检查系统的整体性,并确定哪些应用程序具有高业务价值和低业务价值。
静一
2020/05/25
1K0
day0-准备工作: 工具介绍准备工作: 工具介绍AnaCondaNumPy
拥有超过600万用户,开源Anaconda Distribution是在Linux,Windows和Mac OS X上进行Python和R数据科学和机器学习的最快和最简单的方法。它是单机上开发,测试和培训的行业标准。
iOSDevLog
2018/10/11
1.4K0
LVS(13)——DR模型准备工作及ip地址冲突问题
之前,我们的模型都是-m,也就是NAT模型,但是我们如果不指定,默认模型是DR模型。
gzq大数据
2020/11/11
1.1K0
LVS(13)——DR模型准备工作及ip地址冲突问题
抖音app的抓取------准备工作
抓取app的话,首先需要一个手机或者在自己的电脑上安装模拟器,模拟器你需要知道各个模拟器的默认端口
andrew_a
2019/07/30
3.6K0
抖音app的抓取------准备工作
加工中心编程前的准备工作
数控编程、车铣复合、普车加工、行业前沿、机械视频,生产工艺、加工中心、模具、数控等前沿资讯在这里等你哦
lrglu
2023/09/06
2150
加工中心编程前的准备工作
研发转型产品前的准备工作
我最开始做的是前端开发,5年时间在公司里晋升到技术总监。这时候还是以技术为主,后面自己创业开始接触管理和产品。目前也有近5年产品经理的工作经验。和很多同学一样,靠的是自学和在工作里成长。
石云升
2022/08/25
2660
Go实战准备工作---BeenGo的使用
在Terminal窗口下执行 go get github.com/beego/bee在%GOPATH%\bin下会有bee.exe文件
用户6680840
2022/06/08
5760
Go实战准备工作---BeenGo的使用
1.前期准备工作
1、首先我先创建一个仓库,大家fork这个仓库(https://github.com/Ewall1106/mall),以此仓库为核心,我会把每天新完成的代码提交上去更新,一直到大家一起把这个项目做完;大家fork完以后可以同步我的仓库查看或者在我的仓库上直接做修改,有问题也可以提issue。 2、大家在github上建一个自己的项目,自己动手亲自写一遍,有问题可以查看fork的核心仓库,也可以在群里一起讨论解决问题。
Ewall
2018/09/04
3330
1.前期准备工作
TienChin 活动管理-准备工作
程序员 NEO
2023/10/12
1620
TienChin 活动管理-准备工作
LVS(6)——NAT准备工作
SNAT是指将客户端访问的vip目标地址改为rip,DNAT指的是将源地址的rip改为vip,接下来要实现这个模型,要准备四台虚拟机: 第一台:LVS客户端192.168.19.200,单网卡,nat连接:
gzq大数据
2020/11/11
3140
LVS(6)——NAT准备工作
点击加载更多

相似问题

NSNotificationCenter不能在ViewControllers之间工作

20

身高: 100%;不能工作

21

如果高度100%不能工作

110

CSS高度100%不能工作

22

剖面高度100%不能工作

19
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文