Я пытаюсь получить имя в textLabel
первой ячейки, которая проверяется в моем tableView
, но я не могу получить AnyObject
, преобразованный в строку. Моя ошибка говорит:Anyobject string при добавлении массива
fatal error: unexpectedly found nil while unwrapping an Optional value
и он появляется в последней строке моего кода.
var stringList = [String]()
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let mySelectedCell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
if (mySelectedCell.accessoryType == UITableViewCellAccessoryType.Checkmark) {
mySelectedCell.accessoryType = UITableViewCellAccessoryType.None
}
else {
mySelectedCell.accessoryType = UITableViewCellAccessoryType.Checkmark
mySelectedCell.tintColor = UIColor.blackColor()
if let tx = mySelectedCell.textLabel?.text as Optional{
stringList.append(tx)}
}
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var destVC: AddFriendViewController = segue.destinationViewController as AddFriendViewController
destVC.viewOut.text! = stringList[0] as String
}
Любые мысли о том, как действовать, будут оценены по достоинству.
EDIT: Адресат код ВК:
@IBOutlet weak var usernameLabel: UITextField!
@IBOutlet weak var viewOut: UITextField!
var viewer:String = String()
override func viewDidLoad() {
super.viewDidLoad()
viewOut.text = viewer
// Do any additional setup after loading the view.
}
EDIT 2: Заменяя функцию prepareForSegue
я избавилась от моей ошибки, но ярлык еще не показывает какой-либо текст.
func friendAdded(){
var destVC: AddFriendViewController = AddFriendViewController()
destVC.viewer = stringList[0]
}
моя мысль в том, что viewOut destVC в настоящее время не инициализирован, и поэтому вы получаете нильполугруппы – chris
@ Крис Я добавил код для назначения VC тоже. – martin
Я не понимаю, что вы подразумеваете под «заменой функции« prepareForSegue », поскольку вы затем переходите к тому, чтобы показать нам метод« friendAdded », который не имеет никакого смысла. Вы должны сохранить свой метод 'prepareForSegue', но просто измените его так, чтобы он устанавливал' viewer', а не 'viewOut.text'. Не выполняйте segue автоматически (но скорее запускайте его программно в 'didSelectRowAtIndexPath'), но вам нужно сохранить метод' readyForSegue', который устанавливает 'viewer' в пункт назначения. – Rob