2016-08-27 61 views
1

嘗試將TableViewController上的選定單元格上的標籤傳遞給TableViewController上的靜態單元格上的一個標籤,當我點擊後退按鈕時。我在didSelectRowAtIndexPath()得到正確的標籤。但是當我嘗試打印它時數據不會傳回。我已經嘗試了很多場景並作爲最後的手段來到這裏。任何幫助將不勝感激,謝謝!數據將不會傳遞迴先前的tableview控制器

tableviewcontroller之一:

class SearchTableViewController: UITableViewController, SortProtocol { 

var sort: String? 

override func viewDidLoad() { 
    super.viewDidLoad(

    SORTBYCELL.detailTextLabel?.text = sort 


} 
    func passdata(sort: String?){ 
    self.sort = (sort) 
    } 

TableViewController二:

protocol SortProtocol { 
func passdata(sort: String?) 
} 
class SortByTable: UITableViewController { 

var delegate: SortProtocol? 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.delegate = self 
} 

override func tableView(tableView: UITableView,   didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    let current = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell 

    let sort = current.textLabel!.text! 

    self.delegate?.passdata(sort) 
+0

在vc2中,需要獲取對vc1的引用並將其分配給委託。你在使用導航控制器嗎? – Shades

+0

把這個'SORTBYCELL.detailTextLabel?.text = sort''in func passdata(sort:String?){...}。因爲viewDidLoad只在加載視圖時執行一次 – KSR

回答

0

您必須分配委託。如果你有一個「後退」按鈕,那麼我會假設你正在使用導航控制器。使用它,我們得到對第一個viewController的引用。因此,SortByTable中的viewDidLoad()將如下所示:

override func viewDidLoad() { 
    super.viewDidLoad() 

    let searchVC = self.navigationController?.viewControllers[0] as! SearchTableViewController 
    self.delegate = searchVC 

    tableView.delegate = self 
} 
+0

關於我如何保持對勾的任何想法當用戶返回到「SortByTable」時?感謝您的幫助,解決了我的問題 –

+0

@JoeDodge先前選擇的行的複選標記?您需要一個跟蹤所選單元格的變量,然後當該v iewController返回到屏幕上,你檢查變量,並將該行設置爲選中 – Shades

+0

是的,它真棒,生病檢查出來...開始編寫iOS應用程序大約一個月前從web開發來的。我感謝你的幫助 –

0

,如果你檢查了delegatenil(例如通過在其上設置一個斷點),您的代碼並沒有提到。

更新UITableViewCell■當最好的辦法是通過數據源的方法來做到這一點:

func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

所以,你的情況,請與sort新值passdata更新您的數據源,然後調用tableView.reloadData()重新加載單元格。

+0

我正在更新的單元格標籤是靜態的,在我選擇的單元格是從一個數組中選擇的,我使用它準備了segue,但我更喜歡這樣做,當我點擊一個單元格時,它會打印出正確的標籤只是不會通過它 –

+0

我認爲使用數據源是要走的路,我不知道是否將IBOutlet從一個類設置爲原型單元格應該可以工作 – paulvs

相關問題