我在swift中创建一个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
答案 0 :(得分:1)
一个简单的解决方案可能是使用Singleton pattern。这是一个design pattern,旨在用于最多只能包含一个实例的对象。我假设CalculatorEngine
类是正确的。
Swift中的单身人士很简单:只需将以下内容添加到CalculatorEngine
课程中:
static let sharedInstance : CalculatorEngine = CalculatorEngine()
这创建了一个类级别属性,可以从应用程序的任何位置轻松访问 - 您可以通过以下方式获取sharedInstance:
let engine = CalculatorEngine.sharedInstance
这将允许您访问计算器引擎,而无需担心在各种segue方法中来回传递引用。
作为旁注,Singleton模式有时被视为反模式,因为在复杂的应用程序中,它可能使得很难正确地模拟类以进行测试,并且还可以增加应用程序中可变全局状态的数量。但如果明智地使用,那就没关系 - 当然它非常适合你的要求。它也融入了Cocoa Touch - UIApplication.sharedApplication
是一个单身人士。