将 NSString 从 UIViewController 传递到另一个
Pass NSString from an UIViewController to another
我正在尝试将字符串值从 ViewController 传递给另一个:
@IBAction func unwindToMasterViewController(segue: UIStoryboardSegue) {
let viewController:MyViewController = segue.sourceViewController as! MyViewController
sprite = viewController.sp //sp is NSString declared in MyViewController
print("the string is \(viewController.sp)")// nothing happens!!!
}
我可以在 "leaving" MyViewController
.
之前的日志中看到 sp
不是 nil
有更好的方法吗?
编辑:
我想我可能知道这个问题:
在日志中,在我从 MyViewController
获取字符串值之前调用了 @IBAction func unwindToMasterViewController(segue: UIStoryboardSegue)
。
日志出现的顺序是:
"the string is "
然后从 MyViewController
打印出实际值:
"sp is testString"
我该如何解决这个问题?
我这样做了并且对我有用
@IBAction func cancelButtonTapped(sender: UIButton) {
self.dismissViewControllerAnimated(true, completion: nil)
let VC = ViewController()
let string = VC.sp
println(string)
delegate?.addTaskCanceled!("task canceled")
}
主要 VC 我在顶部有这个:
let sp:NSString = "Test"
好的。这是解决方案,以防其他人遇到此问题。
问题是(正如所怀疑的那样)在我可以将值传递给 NSString 之前调用了 segue。那是因为我使用的是直接从 IB 连接到 MasterView 的 unwind segue。
我不得不删除 unwind segue 并在我的 UITbleViewCell 被点击时以编程方式执行它 (didSelectRowAtIndexPath)。
然后正确的事件顺序展开:
从单元格中获取值,然后执行 segue。
这样,值就按预期传递给了 MasterViewController。
我无法理解为什么会发生这种情况,或者在调用操作之前调用 unwind segue 的原因是什么,但 Apple 以神秘的方式工作...
我正在尝试将字符串值从 ViewController 传递给另一个:
@IBAction func unwindToMasterViewController(segue: UIStoryboardSegue) {
let viewController:MyViewController = segue.sourceViewController as! MyViewController
sprite = viewController.sp //sp is NSString declared in MyViewController
print("the string is \(viewController.sp)")// nothing happens!!!
}
我可以在 "leaving" MyViewController
.
sp
不是 nil
有更好的方法吗?
编辑:
我想我可能知道这个问题:
在日志中,在我从 MyViewController
获取字符串值之前调用了 @IBAction func unwindToMasterViewController(segue: UIStoryboardSegue)
。
日志出现的顺序是:
"the string is "
然后从 MyViewController
打印出实际值:
"sp is testString"
我该如何解决这个问题?
我这样做了并且对我有用
@IBAction func cancelButtonTapped(sender: UIButton) {
self.dismissViewControllerAnimated(true, completion: nil)
let VC = ViewController()
let string = VC.sp
println(string)
delegate?.addTaskCanceled!("task canceled")
}
主要 VC 我在顶部有这个:
let sp:NSString = "Test"
好的。这是解决方案,以防其他人遇到此问题。
问题是(正如所怀疑的那样)在我可以将值传递给 NSString 之前调用了 segue。那是因为我使用的是直接从 IB 连接到 MasterView 的 unwind segue。
我不得不删除 unwind segue 并在我的 UITbleViewCell 被点击时以编程方式执行它 (didSelectRowAtIndexPath)。
然后正确的事件顺序展开: 从单元格中获取值,然后执行 segue。 这样,值就按预期传递给了 MasterViewController。
我无法理解为什么会发生这种情况,或者在调用操作之前调用 unwind segue 的原因是什么,但 Apple 以神秘的方式工作...