我迅速创建了RPN计算器。当按下磁带按钮以选择第二个VC时,我需要帮助代码查看所有计算。当按下磁带按钮时,它将显示输入的计算。第二个视图控制器中的功能。我知道要编程。我在第一个VC中实现了prepareforsegue。我不知道如何将堆栈传递给numberOfRowsInSection

计算器引擎

class CalculatorEngine :NSObject

{

    var operandStack = Array<Double>()

    func updatestackWithValue(value: Double)
    {
        self.operandStack.append(value)
    }


    func operate(operation: String) ->Double
    {

        switch operation
        {
        case "×":
            if operandStack.count >= 2
        {
        return self.operandStack.removeLast() * self.operandStack.removeLast()




第二种观点

class SecondVCViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var array = [""]

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->  UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

    cell.textLabel?.text = array[indexPath.row]

    return cell

最佳答案

一个简单的解决方案可能是使用Singleton pattern。这是一个design pattern,旨在用于最多具有单个实例的对象。我假设CalculatorEngine类是正确的。

Swift中的单例很简单:只需将以下内容添加到您的CalculatorEngine类中:

static let sharedInstance : CalculatorEngine = CalculatorEngine()

这将创建一个可以从应用程序中的任何位置轻松访问的类级别属性-您可以通过以下方式获取sharedInstance:

let engine = CalculatorEngine.sharedInstance

这将使您能够访问计算器引擎,而不必担心在各种segue方法中来回传递引用。

附带说明,Singleton模式有时被视为反模式,因为在复杂的应用程序中,它可能使得难以正确地模拟类以进行测试,并且还可能增加应用程序中可变的全局状态。但是,如果明智地使用它就可以了-当然可以很整洁地满足您的要求。它也被烘焙到Cocoa Touch中-UIApplication.sharedApplication是一个单例。

关于ios - Segue:将堆栈显示到第二个View Controller,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35845692/

10-10 20:52