2015-06-23 3 views
-1

Я пытаюсь передать данные с tableview на предыдущий экран, который является моим Зарегистрироваться. В частности, я посылаю название школы.didSelectRowAtIndexPath не меняет свойство Я перехожу к предыдущему Просмотр

Что происходит, когда я возвращаюсь к предыдущему экрану через сегу, метка, которую я меняю (schoolTextLabel), показывает «None Selected», когда я хочу, чтобы она отображала название школы. Через некоторую проверку ошибок я обнаружил, что, когда у меня есть это println(theSchoolName), он правильно выбирает имя, которое я хочу отображать, Он просто не передает значение другому экрану.

Пожалуйста, помогите!
Я искал бесконечно в Интернете для ответа и не мог на всю жизнь найти ответ.
Спасибо!

TableViewController

var namesArray = [String]() 
var locationsArray = [String]() 

var theSchoolName = "None Selected" 


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "selectedSchool" { 
     var completeSignUpVC = segue.destinationViewController as! SignUpViewController 
     completeSignUpVC.school = self.theSchoolName 
    } 
} 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    self.theSchoolName = self.namesArray[indexPath.row] 
    self.performSegueWithIdentifier("selectedSchool", sender: self.namesArray[indexPath.row]) 

    println(theSchoolName) 
} 

SignUpViewController

class SignUpViewController: UIViewController, UITextFieldDelegate { 

@IBOutlet var schoolTextLabel: UILabel! 
var school = "No School Selected" 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    self.schoolTextLabel.text = self.school   
    usernameSignupText.delegate = self 
    passwordSignupText.delegate = self 
} 
} 
+0

Просто потому, что вы присвоили строку метке, это не означает, что в любое время, когда вы обновляете строку, метка обновляется. Вам необходимо обновить ярлык, установив его текстовое свойство, скорее всего, в ViewWillAppear. Кроме того, 'prepareForSegue' не вызывается при навигации в обратном порядке в' UINavigationController'. –

+0

Я не использовал UINavigationController, это просто контроллер просмотра с таблицей и кнопка отмены вверху. Он получает вызов, и я знаю это, потому что вместо «No School Selected» появляется «None Selected», поэтому ярлык обновляется, однако он должен отправлять все, что я выбираю в таблице. Знаете ли вы какое-либо исправление для этого или вам нужна дополнительная информация? –

ответ

0

Я нашел ответ. Мне нужно было найти выбранный индекс строки, а затем вызвать этот номер в namesArray. Я не совсем уверен, почему мой предыдущий код не работал, но теперь это работает.

var selectedRowIndex = self.schoolTable.indexPathForSelectedRow() 
var completeSignUpVC = segue.destinationViewController as! SignUpViewController 
completeSignUpVC.school = namesArray[selectedRowIndex!.row]