访问自定义表格单元格标签

时间:2014-09-21 22:10:51

标签: ios uitableview swift

我在表格单元格中创建了两个自定义标签,以便能够动态调整单元格内容的大小。我首先尝试使用“Subtitle”风格,除了单元格没有按照我想要的方式调整大小并且它看起来非常混乱之外,这样做很好。

我的问题是:我如何访问这些标签,以便将我的API附加到我的API中?

查看控制器代码:

import UIKit

class nyheterViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, APIControllerProtocol {

    @IBOutlet weak var nyheterTableView: UITableView!
    @IBOutlet weak var titleLabel: UILabel!

    var searchResultsData: NSArray = []
    var api: APIController = APIController()

    func JSONAPIResults(results: NSArray) {
        dispatch_async(dispatch_get_main_queue(), {
            self.searchResultsData = results
            print(self.searchResultsData)
            self.nyheterTableView.reloadData()
        })
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        var APIBaseUrl: String = "http://*.se/*/*.php"
        var urlString:String = "\(APIBaseUrl)"

        //Call the API by using the delegate and passing the API url
        self.api.delegate = self
        api.GetAPIResultsAsync(urlString, elementName:"news")
    }

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

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        //print(self.searchResultsData.count)
        return self.searchResultsData.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cellIdentifier: String = "nyheterResultsCell"


        let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UITableViewCell

        //nyheterTableViewCell.cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier);

        //Create a variable that will contain the result data array item for each row
        var cellData: NSDictionary = self.searchResultsData[indexPath.row] as NSDictionary
        //Assign and display the Title field
        var releaseDate: String = cellData["date"] as String
        var titleVar: String = cellData["title"] as String
        var titleMix: String = "\(titleVar)" + " - " + "\(releaseDate)"

        cell.textLabel?.text = titleMix //textLabel worked out fine using "Subtitle" style.

        // Get the release date string for display in the subtitle

        cell.detailTextLabel?.text = cellData["content"] as String? //Same

        return cell
    }
}

我知道如果不以某种方式将它们连接到ViewController,我就无法访问这些标签。创建ViewController的出口会产生错误,我无法使用从原型单元格到ViewController的连接。 所以,我创建了一个名为nyheterTableViewCell的新类,它连接到表格单元格并连接到我的标签的出口。

nyhterTableViewCell代码:

import UIKit

class nyheterTableViewCell: UITableViewCell {

    @IBOutlet weak var nyhetLabel: UILabel!
    @IBOutlet weak var titleLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

我是Swift编程和Xcode的初学者。

干杯!

1 个答案:

答案 0 :(得分:2)

您不需要连接到视图控制器的标签。您的自定义表视图单元格的示例看起来是正确的。

要访问标签属性,您需要更改行

let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UITableViewCell

let cell: nyheterTableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as nyheterTableViewCell