如何从Swift中的另一个类调用方法?

时间:2015-04-15 22:32:15

标签: ios class swift

当在FirstViewController中按下按钮时,我希望它在另一个类(SecondViewController)中调用func pressedButton()。我该怎么做?

我尝试了以下操作,但它无法正常工作:

SecondViewController().pressedButton()

这是pressedButton的代码:

func pressLearnButton() {
        let screenSize: CGRect = UIScreen.mainScreen().bounds
        let screenWidth = screenSize.width
        self.scrollView.setContentOffset(CGPoint(x: screenWidth, y: 0), animated: true)
    }

3 个答案:

答案 0 :(得分:4)

从语法上讲,您似乎正在尝试完成静态方法通常所做的事情。除非这是你想要完成的,并且我猜测it's not,你需要在调用它上面的方法之前实例化你的SecondViewController,将它分配给一个变量,然后调用你想要的方法如下:

let otherViewController: SecondViewController = SecondViewController()
let result = otherViewController.doSomething()

如果您在单击按钮时尝试转换(segue)到另一个视图控制器,则应使用prepareForSegue() method转换到下一个视图控制器。另外,不要忘记在故事板上设置segue标识符。

希望这很有帮助。

答案 1 :(得分:1)

首先,您必须在FirstViewController中保留对SecondViewController实例的引用。然后,为了从FirstViewController调用SecondViewController中的函数foo(),只需调用secondInstance.foo()。如果foo()是类函数,则可以使用SecondViewController.foo().

进行调用
class A : UIViewController {
    var myB  = B()

    func callBFoo() {
        myB.foo()
    }

    func callStaticBFoo() {
        B.staticFoo()
    }
}

class B : UIViewController {
    func foo() {
        println("foo")
    }

    class func staticFoo() {
        println("static foo")
    }
}

答案 2 :(得分:0)

你真的称之为。但是,在您的情况下,它取决于许多因素。似乎它必须通过调用pressedButton方法显示任何内容。 需要声明控制器的变量,将其视图添加到当前控制器的视图中,您将看到可视化数据。