gpt4 book ai didi

swift - 使用 Swift 在 Xcode 中填充 TableView

转载 作者:行者123 更新时间:2023-11-28 12:48:31 25 4
gpt4 key购买 nike

我在 Xcode 中有一个 ViewController,我在其中添加了两个按钮,一个 View 和一个 TableView(不是 TableView Controller )。

我想在表中有更多的行,我可以在其中添加一些日期,这些日期有时会发生变化。

现在我有一个问题:我有一个类(class),我将在其中控制这些东西:

import UIKit

class DeviceTableViewController: UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()

// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false

// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
}

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

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 4
}

/*
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)

// Configure the cell...

return cell
}
*/

/*
// Override to support conditional editing of the table view.
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
*/

/*
// Override to support editing the table view.
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
// Delete the row from the data source
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
} else if editingStyle == .Insert {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
*/

/*
// Override to support rearranging the table view.
override func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) {

}
*/

/*
// Override to support conditional rearranging of the table view.
override func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool {
// Return false if you do not want the item to be re-orderable.
return true
}
*/

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/

}

现在我想将它与 View 联系起来。这就是为什么我想将属性检查器中的 tableView 的类更改为 DeviceTableViewController(我的类的名称)。但是 Xcode 不会这样做。

我该如何改变它?

最佳答案

UITableViewController 只能处理 Apple 提供的标准表格 Controller 。为了像您希望的那样创建具有混合 View 的 Controller ,您需要子类化标准 UIViewController 而不是 UITableViewController(您目前已经完成)。

我已经尝试重新创建与您类似的场景:一个 Controller ,它有一个 UIView、两个 UIButtons 和一个 UITableView。请注意, TableView 的 datasourcedelegate 已在 Storyboard中设置,但您可以在代码中执行相同的操作。

//
// ViewController.swift
// TableWithStuff
//
// Created by Stefan Veis Pennerup on 18/05/16.
// Copyright © 2016 Kumuluzz. All rights reserved.
//

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

// MARK: - Models

let model = ["Coffee", "With", "Milk", "Please"]

// MARK: - Storyboard outlets

@IBOutlet weak var firstButton: UIButton!
@IBOutlet weak var secondButton: UIButton!
@IBOutlet weak var myView: UIView!
@IBOutlet weak var myTableView: UITableView!

// MARK: - Storyboard actions

@IBAction func firstButtonTapped(sender: UIButton) {
myView.backgroundColor = UIColor.redColor()
}

@IBAction func secondButtonTapped(sender: AnyObject) {
myView.backgroundColor = UIColor.greenColor()
}

// MARK: - UITableViewDataSource

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("myAwesomeCell")!
cell.textLabel!.text = model[indexPath.row]
return cell
}

}

Storyboard of the controller

Datasource and delegate set in the storyboard

The final result

关于swift - 使用 Swift 在 Xcode 中填充 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295575/

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