我是IOS编程的新手,需要一些方向。 我正在尝试创建一个tableview,每行包含一个图像和一些文本。
我能够使用TableViewController并以编程方式添加基本文本和行。但是,请您告诉我应该如何添加更复杂的内容。尝试使用程序来实现这样的目标。
我的当前代码在我的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
答案 0 :(得分:1)
虽然您可以默认UITableViewCell
来实现,但@meda
在答案中提及,
但看起来,你想要不同的UIImageView
尺寸和2 UILabels
不同的字体大小,或者可能需要更多的控件。要实现这一点,您需要自定义UITableViewCell
,您可以通过继承UITableViewCell
类来完成此任务。
通过继承UITableViewCell创建一个类。
e.g。你的子类说MyCell看起来像 -
2.转到故事板并选择 prototypeCell 并选择Identity inspector
,在类中键入您的自定义类名称(例如MyCell)以代替UITableViewCell
。
拖放您需要的所有控件并链接到IBOutlets
(从MyCell到prototypeCell)。
如下所示..
3.现在转到Attributes Selector
并向Identifier
提供一些MyCell
,您可以提供所需的任何字符串。
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而不需要复制它们。