我迅速创建了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/