gpt4 book ai didi

ios - numberOfRowsInSection 没有覆盖属性检查器

转载 作者:行者123 更新时间:2023-11-28 06:34:40 24 4
gpt4 key购买 nike

Swift 2 中,开发一个 UITableView,它将根据字典的内容动态创建单元格。该词典有 38 个词条。当我在属性检查器中手动将 TableView 部分设置为 38 行时,一切都按预期工作。

但是,这并不理想,我宁愿使用 numberOfRowsInSection 来获取我的字典的计数并以此方式创建行/单元格。当 Att Inspector 设置为 1 时,出现越界错误。

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

这是我的代码:

import SwiftyJSON
import UIKit

class OurTableViewController2: UITableViewController {


@IBOutlet weak var menuButton: UIBarButtonItem!

var labels = [String: UILabel]()
var strings = [String]()
var objects = [[String: String]]()

override func viewDidLoad() {
super.viewDidLoad()

tableView.dataSource = self
tableView.delegate = self

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

//gets data that will be used for cells
let urlString = "http://handheldart.org/api/tags/"
if let url = NSURL(string: urlString) {
if let data = try? NSData(contentsOfURL: url, options: []) {
let json = JSON(data: data)
parseJSON(json)
}
}

//menu button at top left of screen
if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
menuButton.action = "revealToggle:"
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}

}

//creates array 'objects'
func parseJSON(json: JSON) {
for result in json.arrayValue {
let id = result["id"].stringValue
let tagURL = result["url"].stringValue
let tagName = result["name"].stringValue
let obj = ["id": id, "tagURL": tagURL, "tagName": tagName]
//print (tagName)
objects.append(obj)
}

tableView.reloadData()
}

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

// MARK: - Table view data source

//create number of rows based on count of objects array
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print ("OBJECTS COUNT")
print (objects.count) //prints 38
return objects.count
}

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

var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell

let object = objects[indexPath.row]

cell.textLabel?.text = object["tagName"]!

return cell
}

有什么建议吗?

最佳答案

那是因为您将 tableview 的内容属性标记为“静态单元格”。您需要将表格 View 的内容设置为“动态原型(prototype)”。您可以从 tableview Attributes Inspector 执行此操作 -> 在第一个属性“Content”上选择“Dynamic Prototypes”。

enter image description here

关于ios - numberOfRowsInSection 没有覆盖属性检查器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39374966/

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