我是swift的新手,我正在使用故事板,并且已经使用navigationcontrollers从一个viewcontroller连接到另一个。我想将单击的图像的名称发送到下一个viewcontroller,它是从imageView在故事板中模态连接的。我搜索了很多关于将数据从一个viewcontroller传输到另一个与navigationcontrollers模态连接的viewcontroller的信息,但没有可用的解决方案。请让我知道,如果任何代码是必需的,因为我不知道如何继续下去。我知道这可能是最愚蠢的问题,但张贴后,在网上搜索了很多。
EDIT根据@uraimo回复。
我需要为我在故事板上创建的每个segue提供名称吗?我在viewcontrollerA上有2个固定图像,我在每个图像上放置了一个透明背景的uibutton,没有文本,然后按Ctrl键拖动到viewcontrollerB的导航控制器,以模态呈现并展开backbutton,即UIBarButtonItem到viewcontrollerA,通过ctrl拖动viewcontrollerB的后退按钮,退出viewcontrollerB并展开它。
这就是我如何创建导航从任何图像点击出3个图像的viewcontrollerA到viewcontrollerB,并返回到viewcontrollerA的返回按钮点击viewcontrollerB。请让我知道,如果我做错了什么,将您的prepareForSegue代码是有用的,在完成我的任务。
2条答案
按热度按时间brc7rcf01#
基本上,无论是使用IB还是以编程方式执行,都必须在执行segue(或通过代码呈现控制器)之前,用所需的所有数据配置新的viewcontroller。
在您的示例中,只需设置图像名称(您的自定义视图控制器类 YourViewController 应该有一个特定的String属性来保存此值),覆盖当前视图控制器类中的
prepareForSegue
:这解决了传递数据的问题。
但在您的示例中,您需要所单击图像的名称,而该名称只能通过UIGestureRecognizer向
UIImageView
添加一个click事件来获得。所以,你需要一个uigesturerecognized,它会在点击时执行你创建的segue。而且,你将无法获得图像资源的名称(你使用
imageNamed:
创建UIImage
时使用的名称),因为它不再可用,你将不得不使用accessibilityIdentifier
。这使得一切都变得更加复杂,看起来大部分可以通过图形here和here来完成(但实际上并不清楚如何完成),但通常是通过代码来完成的。
使用全局变量稍微简化一下:
并更改以下内容:
更改为:
更新日期:
是的,这是唯一的方法来识别它们,每个
UIStoryboardSegue
都有一个标识符。但是请记住,segues不是从一个控制器到另一个控制器的唯一方法,如果你完全通过编程来完成(没有segues),你通常称之为“presentViewController”。同样,关于segue名称/标识符,您直到现在才需要它,因为您从未从代码中引用过该segue,您需要它用于prepareForSegue和performSegueWithIdentifier。只需选择该segue并在右侧的检查器窗格中给予命名即可。
你描述的结构看起来不错,唯一的问题是我不确定是否真的需要UIButton,尝试从imageview或直接从viewcontroller到目标视图控制器的模态segue。
更新2:
如果你正在开始,需要一个免费的课程,将教你的基础知识,也让你建立一些有趣的ios应用程序,我推荐hackingwithswift。
kulphzqa2#
看看我是怎么做到的