gpt4 book ai didi

swift - 无法解决 SIGABRT 错误 - 带有 UITableView 的时间表应用程序

转载 作者:行者123 更新时间:2023-11-30 13:33:02 25 4
gpt4 key购买 nike

我正在尝试构建一个带有 slider 和 UITableView 的乘法表应用程序,但它给了我 SIGABRT 错误。我尝试过重新链接每个 socket 和操作以及从头开始重做,但它似乎仍然不起作用。

由于我无法以正确的格式将其粘贴到此处,因此我将其放在pastebin.com上

调试代码:http://pastebin.com/cBaALXWq

ViewController.swift

import UIKit

class ViewController: UIViewController, UITableViewDelegate {

override func viewDidLoad() {
super.viewDidLoad()
// 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.
}
@IBOutlet weak var sliderValue: UISlider!
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 50
}
@IBAction func sliderMoved(sender: AnyObject) {
var timesTableIndex: Int = Int(sender.value)!
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
cell.textLabel?.text = String(timesTableIndex*indexPath.row+1)
return cell
}
}

}

AppDelegate.swift;第 4 行出现错误

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

编辑

@IBOutlet weak var sliderValue: UISlider!
var timesTableIndex: Int?
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 50
}
@IBAction func sliderMoved(sender: AnyObject) {
timesTableIndex = Int(sliderValue.value * 50)
}
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
cell.textLabel.text = String(timesTableIndex*(1+indexPath.row))
return cell

}

最佳答案

我看起来您已经在 @IBAction 方法中添加了 cellForRowAtIndex: 。你需要做的就是从方法中取出它。此外,您需要将 timesTableIndex 变量设置为全局变量,以便可以在 cellForRowAtIndexPath: 中访问它,并在 tableView 上调用 reloadData 方法 当您调用 sliderMoved: 方法时。

var timesTableIndex: Int = 0 // Now global variable

@IBAction func sliderMoved(sender: AnyObject) {
timesTableIndex = Int(sender.value)!
self.tableView.reloadData()
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
cell.textLabel?.text = "\(timeTableIndex * indexPath.row + 1)"
return cell
}

此外,您似乎没有在 TableView 上使用 dequeueReusableCellWithIdentifier 方法,因此我更新了代码以使用它。并不是说您需要在 Storyboard中设置 Cell 重用标识符。

关于swift - 无法解决 SIGABRT 错误 - 带有 UITableView 的时间表应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36371533/

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