Я новичок в Swift и работаю над небольшим проектом. У меня есть два UITableViewController: TableViewController и DetailViewController.новый для Swift: как обновить detailTextLabel? .text
Нажмите на ячейку TableViewController, чтобы перейти к DetailViewController. Щелкните мышью на ячейке DetailViewController, чтобы вернуться к TableViewController и обновить файл detailTextLabel? .text с выбранным элементом.
Проблема прямо сейчас, я не знаю, как обновить detailTextLabel? .text. Я могу передать выбранные данные из DetailViewController в TableViewController, но не знаю, как обновить ячейку.
class TableViewController: UITableViewController,DataSelectedDelegate{
var sessions=[Session]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.sessions = [Session(Game: "Game", Detail: "SuperTrack"),Session(Game: "Type",Detail : "Race")]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func userSelectedInformatiom(info:NSString){
//cell.detailTextLabel?.text=info
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.sessions.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
var session:Session
session=sessions[indexPath.row]
cell.textLabel?.text = session.Game
cell.detailTextLabel?.text = sessions[indexPath.row].Detail
return cell
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail"{
let detailVC:DetailViewController = segue.destinationViewController as DetailViewController
detailVC.delegate=self
}
}
}
DetailViewController:
import UIKit
protocol DataSelectedDelegate{
func userSelectedInformatiom(info:NSString)
}
class DetailViewController: UITableViewController {
var types=[GameType]()
var test:String!
var delegate:DataSelectedDelegate? = nil
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.types = [GameType(Type:"Race"),GameType(Type:"Shoot"),GameType(Type:"Kid"),GameType(Type:"Adult")]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return types.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//let identifier: String = "tableCell"
let cell = self.tableView.dequeueReusableCellWithIdentifier("Cells", forIndexPath: indexPath) as UITableViewCell
var type:GameType
type=types[indexPath.row]
cell.textLabel?.text = type.Type
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//println("You selected cell #\(indexPath.row)!")
//let selectedCell = tableView.cellForRowAtIndexPath(indexPath)
//selectedCell?.accessoryType = .Checkmark
if (delegate != nil){
let selectedIndex:NSString=types[indexPath.row].Type
delegate!.userSelectedInformatiom(selectedIndex)
self.navigationController?.popViewControllerAnimated(true)
}
}
}
Спасибо !!! Это действительно полезно – Michael