在swift中,我想让用户在特定视图中的UITextView中输入一个文本字符串,然后将该字符串传递给一个单独的文件,以便我可以用它做任何事情。
在我的PostViewController文件中,我有
<div class="container">
<div class="row">
<div class="col-lg-6">
<!-- <img class="logoImg" src="assets/img/logo.png" /> -->
<span class="logoHeader">croppic</span>
<h2>is an image cropping jquery plugin that will satisfy your needs and much more</h2>
<a href="#" class="downloadButton" >download <sup>v1.0.1</sup></a>
</div><!-- /col-lg-6 -->
<div class="col-lg-6 cropHeaderWrapper">
<div id="croppic"></div>
<span class="btn" id="cropContainerHeaderButton">click here to try it</span>
</div><!-- /col-lg-6 -->
</div><!-- /row -->
</div><!-- /container -->
这会创建一个实例并将用户的文本放入postText变量
在我要传递给的文件中,我有
class PostViewController: UIViewController {
class var sharedPost: PostViewController {
struct Static {
static var instance: PostViewController?
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token) {
Static.instance = PostViewController()
}
return Static.instance!
}
@IBOutlet weak var postText: UITextView!
...
然而,在输入时,程序崩溃并给我一个“致命错误:在展开Optional值时意外地发现nil”。这是否意味着它没有在输入文本中阅读?我该怎么做才能解决这个问题?我也尝试过newString = self.string.postText?.text,但也崩溃了。
答案 0 :(得分:0)
PostViewController()
内的 dispatch_once
会创建一个新对象,但由于它不是显示的一部分,因此它的视图永远不会被加载,因此它的postText
出口没有被填充
假设您的应用创建了一个实际显示的PostViewController
,您需要获取对该应用的引用才能从文本视图中读取。
编辑:
一种方法是让PostViewController
记住最近呈现的实例,如果有的话。
class PostViewController: UIViewController {
static var sharedPost: PostViewController?
override func viewDidLoad() {
super.viewDidLoad()
PostViewController.sharedPost = self
}
}
(我不确定该作业在viewDidLoad
或viewWillAppear
中是否更有意义。您可能想要尝试一下。)
另一方面,似乎我们可能会问及回答错误的问题。
如果PostViewController
在用户输入信息时更新Grade
而不是Grade
必须去钓鱼,那么它是否更有意义?