在表视图单元格中添加各种内容类型

时间:2014-07-17 05:34:24

标签: ios xcode uitableview swift

我是IOS编程的新手,需要一些方向。 我正在尝试创建一个tableview,每行包含一个图像和一些文本。

我能够使用TableViewController并以编程方式添加基本文本和行。但是,请您告诉我应该如何添加更复杂的内容。尝试使用程序来实现这样的目标。

enter image description here

我的当前代码在我的TableViewController中看起来像这样,并且能够在每一行上打印文本消息。

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

override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
    return 10
}


override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
    var mycell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("frontcell", forIndexPath: indexPath) as UITableViewCell

    mycell.textLabel.text = "Just a generic message"

    return mycell
}

有一个

mycell.contentView

接受UIView。但它是如何运作的?该如何创建这个对象?

感谢您的帮助。

------更新----- 感谢Suryakant的帮助。下面给出他一步一步的答案怎么办。任何需要源代码的人都可以使用它。 http://pastebin.com/ZfNqK4tW

2 个答案:

答案 0 :(得分:1)

虽然您可以默认UITableViewCell来实现,但@meda在答案中提及, 但看起来,你想要不同的UIImageView尺寸和2 UILabels不同的字体大小,或者可能需要更多的控件。要实现这一点,您需要自定义UITableViewCell,您可以通过继承UITableViewCell类来完成此任务。

  1. 通过继承UITableViewCell创建一个类。

    e.g。你的子类说MyCell看起来像 -

  2. enter image description here

    2.转到故事板并选择 prototypeCell 并选择Identity inspector,在类中键入您的自定义类名称(例如MyCell)以代替UITableViewCell。 拖放您需要的所有控件并链接到IBOutlets(从MyCell到prototypeCell)。

    如下所示..

    enter image description here

    3.现在转到Attributes Selector并向Identifier提供一些MyCell,您可以提供所需的任何字符串。

    enter image description here

    4.转到您实现UITableView委托的类,然后将cellForIndexPath更新为

    override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath:
     NSIndexPath!) -> UITableViewCell! {
        let kCellIdentifier:String  = "cell"
            var cell = tableView.dequeueReusableCellWithIdentifier(kCellIdentifier) as MyCell!
        if cell == nil {
            // register Custom UITableView Class to UITableView
            tableView.registerClass(MyCell.classForCoder(), forCellReuseIdentifier: kCellIdentifier)
            cell = MyCell(style: UITableViewCellStyle.Default, reuseIdentifier: kCellIdentifier)
        }
        if var label = cell.cellMyCity{
            label.text = cityList[indexPath.row]
        }
        if var label = cell.cellMyCountry{
            label.text = countryList[indexPath.row]
        }
        if var imageView = cell.imageView{
            imageView.image = UIImage(named :"img.png")
        }
    
        return cell
    }
    

    作为参考,您可以看到example code here

答案 1 :(得分:0)

您将创建UITableViewCell的子类,然后将值分配给单元格的属性

mycell.textLabel.text = "Just a generic message"
mycell.detailTextLabel.text = "Just a detail message"
mycell.imageView.text = myImage

为此你只使用一个原型Cell而不需要复制它们。