gpt4 book ai didi

ios - 将 2 个 View 链接到 View Controller 的主要问题

转载 作者:行者123 更新时间:2023-11-30 14:14:27 27 4
gpt4 key购买 nike

我正在制作一个反射测试应用程序,其中一个屏幕是游戏,如果您按下按钮,您可以进入另一个屏幕,其中包含一个作为表格 View 的记分板。我最初使用 cocoa touch 将第二个 View 附加到第二个 UIViewController ,但问题是,我无法访问第一个 UIViewController 中的任何变量或数据,并且这很重要(因为表必须从第一个 UIViewController 重新加载数据)。然后我尝试使第二个 UIViewController 成为第一个 UIViewController 的子类(我遇到了问题),所以我放弃了这个想法。现在两个 View 都连接到一个 UIViewController,我面临着多个问题。首先,当尝试执行功能并更改屏幕中不存在的数据值时(即:在 View 上重新加载表数据确实已加载,这会导致错误,因为屏幕上不存在表)。有没有解决方案,有没有一种方法可以将一个 View Controller 中的所有数据连接到另一个 View Controller ?谢谢。这是代码(位于 1 UIViewController 中)

import UIKit
class ViewController: UIViewController, UITableViewDelegate {
var arr = [Int]()
var timer = NSTimer()
var countdowntimer = NSTimer()
var count = 0
var countdown = Int(arc4random_uniform(4000) + 1000)
var highscore:Int!
var buttonTapCounter:Int!
let dateFormatter = NSDateFormatter()


@IBOutlet weak var beginButton: UIButton!


@IBOutlet weak var table: UITableView!
@IBOutlet weak var resetDataButton: UIButton!
@IBOutlet weak var averageLabel: UILabel!
@IBOutlet weak var bestLabel: UILabel!





@IBOutlet weak var startButton: UILabel!
@IBOutlet weak var highScoreButton: UILabel!
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var backgroundImage: UIImageView!

func updateTime() {
countdown = countdown - 1
if countdown <= 0 {
startButton.textColor = UIColor.blackColor()
startButton.text = "Tap Now!"
countdowntimer.invalidate()
backgroundImage.image = UIImage(named: "red")
count = 0
Timer()
}
}

func Timer() {
timer = NSTimer.scheduledTimerWithTimeInterval(0.001, target:self, selector:Selector("reflexTest"), userInfo:nil, repeats: true)

}

func reflexTest() {
count = count + 1
timerLabel.text = "\(count) ms"
}



@IBAction func returnPressed(sender: AnyObject) {
buttonTapCounter = 0
}


@IBAction func scoreButtonTouched(sender: AnyObject) {
table.reloadData()
}

@IBAction func beginTapped(sender: AnyObject) {
if startButton.text == "Tap when the Color Changes" {
startButton.text = "You tapped too early!"
countdowntimer.invalidate()
countdown = Int(arc4random_uniform(4000) + 1000)
} else {
if count == 0 {
countdowntimer = NSTimer.scheduledTimerWithTimeInterval(0.001, target: self, selector: Selector("updateTime"), userInfo: nil, repeats: true)
startButton.text = "Tap when the Color Changes"
countdown = Int(arc4random_uniform(4000) + 1000)
timerLabel.text = "\(count) ms"
} else {
timer.invalidate()
backgroundImage.image = UIImage(named: "green")
startButton.text = "Tap to Begin"
arr.append(count)
count = 0
highscore = minElement(arr)
highScoreButton.text = "Best: \(highscore) ms"
saveDefaults()
loadDefaults()
}

}

}

func loadDefaults() {

if let savedArray = NSUserDefaults.standardUserDefaults().objectForKey("data") as? [Int] {
self.arr = savedArray
}
}
func saveDefaults() {
NSUserDefaults.standardUserDefaults().setObject(self.arr, forKey: "data")

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
dateFormatter.dateFormat = "MM/dd/yy HH:mm"
let dateInFormat = dateFormatter.stringFromDate(NSDate())

let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")

cell.textLabel?.text = String(arr[indexPath.row])

return cell
}
func highScoreButtonText() {
//highScoreButton.text = "Best: \(highscore) ms"
}

override func viewDidLoad() {
super.viewDidLoad()
loadDefaults()



highscore = minElement(arr)
highScoreButtonText()




// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}

有问题的代码位于 viewDidLoad 中,每当我重新加载数据时。主要是因为有2种观点。我知道我应该创建 2 个单独的 View Controller ,但是有没有办法链接它们之间的所有数据?谢谢。​

最佳答案

您需要共享的数据不应位于 View Controller 内。创建一个对象来充当数据模型。

它可以是单例,也可以由应用程序委托(delegate)拥有......无论您喜欢什么方式,以便需要它的 Controller 都可以访问它。

(您甚至可以让第一个 Controller 拥有它,并传递对第二个 Controller 的引用......但随着应用程序变大,这不能很好地扩展。)

关于ios - 将 2 个 View 链接到 View Controller 的主要问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com