我试图创建一个应用程序,用户可以在其中添加一个单元格,以及他可以在哪里添加不同的内容到单元格,例如姓名,生日和爱好。 到现在为止还挺好。 但是我怎样才能向他展示每个细胞的个体内容? 我是否必须添加具有不同标签的ViewController,其中我加载为特定单元格保存的文本,例如使用NSuserdefaults / Coredata? 或者我完全错了?
我现在拥有的:在我的viewController中我可以添加项目
@IBAction func doneButtonPressed(sender: AnyObject) {
name = txtFieldName.text!
vc.items.append(name)
vc.tableView.reloadData()
self.dismissViewControllerAnimated(false, completion:nil)
}
在我的tableviewController中:
var items = [String]();
override func viewDidLoad() {
super.viewDidLoad()
print(items)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("itemCell", forIndexPath: indexPath)
cell.textLabel!.text = items[indexPath.row]
return cell
}
答案 0 :(得分:1)
你需要实现一点这个东西
NavigationController - >(segue)TableView或TVController - >(显示项目segue)TableView或TVController
使用这个例子,我们应该有每个tableview和cell的文件 第一对(newsvc.swift newscell.swift) 第二对(newsitemvc.swift newsitemcell.swift)
因此我们理解它是MVC
我们需要实现一些静态数据 创建模型文件(添加struct并初始化它)
struct News {
var time: String?
var title: String?
var text: String?
init(time: String?, title: String?,text: String?) {
self.time = time
self.title = title
self.text = text
}
}
在第二个文件中,我们为struct
创建数据let newsData = [ News(time: "10:00", title: "Test", text: "Some text"),
News(time: "11:00", title: "Test1", text: "Some text1")]
NewsCell.swift
class NewsCell: UITableViewCell {
@IBOutlet weak var timeLabel: UILabel!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var textLabel: UILabel!
var news: News! {
didSet {
timeLabel = news.time
titleLabel = news.title
textLabel.text = news.text
}
}
}
在NewsViewController中我们需要添加"新闻"数组并使其从" newsData" 获取数据
var newsItems: [News] = newsData
更新功能
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return newsItems.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("NewsCell", forIndexPath: indexPath) as! NewsCell
let news = newsItems[indexPath.row] as News
cell.news = news
return cell
}
之后我们应该添加segue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let indexPath: NSIndexPath = self.tableView.indexPathForSelectedRow!
tableView.deselectRowAtIndexPath(indexPath, animated: true)
if segue.identifier == "showItemSegue" {
if let destViewController = segue.destinationViewController as? NewsItemViewController {
let seguedArray = newsItems[indexPath.row] as News
destViewController.newSeguedArray = seguedArray
}
}
}
答案 1 :(得分:0)
在将数据设置为所述单元格之前,您会将数据附加到数组中。您可以使用数组中的索引和index.row
变量,根据用户点击的内容提取此数据。