如何从 viewController2 上的按钮对 viewController1 执行操作?
Posted
技术标签:
【中文标题】如何从 viewController2 上的按钮对 viewController1 执行操作?【英文标题】:How to execute an action on viewController1 from a button on viewController2? 【发布时间】:2015-12-20 09:53:19 【问题描述】:所以我有 viewcontroller1,我有一个 UIScrollview
让它移动。我有一个Home
按钮,按下该按钮可将滚动视图移动到所需位置。
这部分工作正常。
import UIKit
class ViewController: UIViewController
@IBAction func home(sender: AnyObject)
if (scrollView != nil)
scrollView.scrollRectToVisible(CGRectMake(8, 1004, 359, 496), animated: true)
@IBOutlet var scrollView2: UIScrollView!
@IBOutlet weak var label: UILabel!
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if (scrollView2 != nil)
scrollView2.contentSize.height = 5000
scrollView2.contentSize.width = 375
if (ScrollView != nil)
scrollView.contentSize.height = 5000
scrollView.contentSize.width = 375
我有第二个视图控制器,它从第一个视图控制器呈现,带有Push
segue。这个视图控制器还有一个名为Home
的UIButton
。当我点击viewController2中的Home
按钮时,我想返回viewController1并在那里执行home
动作来定位viewController1中的scrollView。
如何在 Swift 中做到这一点?谢谢!
【问题讨论】:
不清楚您在问什么,因为视图控制器结构远非显而易见 - 滚动视图与任何事情有什么关系?旁注:变量和方法名应该用驼峰式书写:scrollView
和 home
。
我有链接到滚动视图的主页按钮,所以当我点击主页时,它会转到那个位置,但是当我把主页放在一个新的 ViewController 中,即 ViewController2 时,我会想要它,所以当我点击主页时转到 ViewController,它是最初的视图控制器,即 ViewController1,然后自动滚动到我放入的 x,y,w,h
如果您使用的是uinavigationcontroller
,请致电popViewControllerAnimated:
- 您提供的有关当前设置的信息太少。
我把我所有的都放在这里了,这足以帮助我吗?
基本上我需要一个按钮,所以当我按下它时,它将转到另一个 ViewController 到 UIScrollVIew 的 Y 点
【参考方案1】:
你想按下 viewController2 中的 Home 按钮并返回到 viewController1 并执行一个方法来定位你的滚动视图。
你可以使用 unwind segue 来完成这个任务。在初始 viewController 中的 home
函数下方,添加一个名为 goHome
的方法:
@IBAction func home(sender: AnyObject)
if (scrollView != nil)
scrollView.scrollRectToVisible(CGRectMake(8, 1004, 359, 496), animated: true)
@IBAction func goHome(segue: UIStoryboardSegue)
// Call the home method to position the scrollView
home(self)
然后在 Storyboard 中,Control-从 viewController2 中的 Home 按钮拖动到 viewController 顶部的 Exit
图标,然后从弹出窗口。
然后,当您运行您的应用并在 viewController2 中按 Home 时,它将展开回到 viewController1 并调用 home
将滚动视图定位到您想要的位置。
【讨论】:
非常感谢,我现在就去练习一下。 我还有一个问题,在 viewController2 中,我有一个连接到 viewController1 的“返回”UIButton,所以我可以返回它。是否有可能当我在 scrollView 上的某个位置时,我可以转到 viewController2 并且当我点击返回而不是我在 viewController2 中设置的 UIButtons 时,我会回到我离开的原始位置?我知道从 viewController1 到 2 的部分,但是当我将 viewController2 到 1 时,我不知道如何在原点。谢谢你在另一部分帮助我,我会练习那个 您的后退按钮是如何连接的?它是导航控制器提供的默认值,还是您刚刚添加了一个名为Back
的 UIButton
,它使用推送转场返回 VC1?
刚刚添加了一个名为 Back 的 UIButton,它使用 push segue 返回到 VC1
您不想通过 push segue 回到 VC1。 push segue 会创建一个新的 VC1 副本。你想像我上面展示的那样使用 unwind segue。在 VC1 中创建第二个着陆点 @IBAction func returnHere(segue: UIStoryboardSegue) // nothing to do here right now
,然后将您的 Back
按钮连接到退出图标并选择 returnHere
。然后,当您按 Back
时,您将返回 VC1,完全是,就像您离开它一样。以上是关于如何从 viewController2 上的按钮对 viewController1 执行操作?的主要内容,如果未能解决你的问题,请参考以下文章