有没有一种在swift中设置UITableViewCell样式的方法?

时间:2016-02-21 03:08:13

标签: ios swift uitableview

我有一个表格视图,我根据我的json添加了几个单元格。

到目前为止,添加单元格的代码如下所示:

override func viewWillAppear(animated: Bool) {
    let frame:CGRect = CGRect(x: 0, y: 90, width: self.view.frame.width, height: self.view.frame.height-90)
    self.tableView = UITableView(frame: frame)
    self.tableView?.dataSource = self
    self.tableView?.delegate = self
    self.view.addSubview(self.tableView!)

}

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("CELL")

    if cell == nil {
        cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "CELL")
    }

    let user:JSON =  JSON(self.items[indexPath.row])

    cell!.textLabel?.text = user["description"].string

    var photoURL =  "/path/to/my/icon/google.png"

    if let data = NSData(contentsOfFile: photoURL)
    {

        cell!.imageView?.image = UIImage(data: data)
    }
    return cell!
}

除了我的json中的description,我还有usernameprice。到目前为止 - 由于我只添加imageViewdescription,因此3个单元格如下所示:

enter image description here

有没有办法对其进行样式设置,以便每个单元看起来与此相似:

enter image description here

priceusername在这里是灰色的?)?我怎样才能达到这个效果?

===编辑:

这就是我填充表格的方式:

我从rest webservice获取数据到json:

func getAllUsers() {
    RestApiManager.sharedInstance.getUsers { json in
        let results = json
        for (index: String, subJson: JSON) in results {
            let user: AnyObject = JSON.object
            self.items.addObject(user)
            dispatch_async(dispatch_get_main_queue(),{
                self.tableView?.reloadData()
            })
        }
    }
}

我在我的viewWillAppear函数

中调用了这个方法

3 个答案:

答案 0 :(得分:3)

您可以让您的表使用自定义UITableViewCells并根据自己的喜好设置样式。

简而言之,您在Storyboard中创建一个原型单元,它看起来就像您发布的示例,并将其与您创建的元素连接到自定义UITableViewCell类。在cellForRowInIndexPath中,您将返回自定义单元格而不是常规UITableViewCells。

查看本教程了解详情:http://shrikar.com/uitableview-and-uitableviewcell-customization-in-swift/

答案 1 :(得分:2)

  1. 使用自定义样式创建单元格的布局。像storyborad中的任何其他地方一样放置标签和imageView。 enter image description here

  2. 您需要创建一个UITableViewCell文件。我使用的那个名为ExampleTableViewCell。记下子类。 enter image description here

  3. 现在将您的单元格连接到刚刚创建的ExampleTableViewCell。 enter image description here

  4. 现在我们可以将标签和单元格的imageView插入到ExampleTableViewCell中。控制从每个元素拖动到ExampleTableViewCell。 enter image description here

  5. 最后一步是使用cellForRowAtIndexPath func配置单元格。记下var单元格。我们现在将其转换为ExampleTableViewCell。一旦我们这样做,我们可以使用ExampleTableViewCell中的出口来设置我们的标签和图像。确保为故事板中的单元格设置resuseIdentifier。如果您对此不熟悉,请发表评论,我可以为此添加说明。

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier") as! ExampleTableViewCell
    
    cell.imageDisplay.image = yourImage
    cell.descriptionLabel.text = yourDescription
    cell.priceLabel.text = yourPrice
    cell.usernameLabel.text = yourUsername
    
    return cell
    

    }

答案 2 :(得分:1)

UITableViewCell子类。您可以转到故事板上的TableView并转到其中一个原型并将其设置为自定义类,并将其设置为自定义,然后您可以按住Ctrl键并单击&将出口/操作拖动到UITableViewCell子类的方式与基本视图控制器相同。