我是iOS的初学者。
我有个问题,我创建了一个名为ModalViewController
的类。为了使它成为一个普通类,我没有给这个类中的textView提供任何文本。所以当我呈现这个viewController时,我试图改变文本。
但我犯了个错误。我怎样才能修好它?
此外,如何在文本视图中更改margin
值?
主故事板
主视图控制器.swift
import UIKit
var modalview : ModalViewController!
class ViewController: UIViewController {
...
@IBAction func Onclick(_ sender: Any) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myAlert = storyboard.instantiateViewController(withIdentifier: "ModalViewController")
myAlert.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
myAlert.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
modalview.modalCustomAlert.text = "test test test text" // Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
self.present(myAlert, animated: true, completion: nil)
}
ModalViewController.swift命令
import Foundation
import UIKit
class ModalViewController : UIViewController {
@IBOutlet weak var modalCustomAlert: UITextView!
@IBOutlet weak var cancelButton: UIButton!
@IBOutlet weak var okButton: UIButton!
@IBAction func cancelPress(_ sender: Any) {
}
@IBAction func okPress(_ sender: Any) {
}
override func viewDidLoad() {
super.viewDidLoad()
modalCustomAlert.layer.cornerRadius = 8
}
@IBAction func modalbutton(_ sender: Any) {
}
}
编辑开始
我试图分配一个值,但错误没有变化。
var modalview = ModalViewController()
...
@IBAction func Onclick(_ sender: Any) {
...
modalview.modalCustomAlert.text = "test test test text" // Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
}
编辑二开始
我已经试过了。但当我看到@PGDev的答案时,我又试了一次,但还是显示了同样的错误。
@IBAction func Onclick(_ sender: Any) {
...
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myAlert = storyboard.instantiateViewController(withIdentifier: "ModalViewController") as! ModalViewController
myAlert.modalPresentationStyle = .overCurrentContext
myAlert.modalTransitionStyle = .crossDissolve
myAlert.modalCustomAlert.text = "test test test text" // Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
self.present(myAlert, animated: true, completion: nil)
}
最佳答案
致命错误:隐式展开可选值时意外找到nil
modalview.modalCustomAlert.text = "test test test text"
例外是因为
modalview
是nil
或modalCustomAlert
是nil
。一。你已经创建了
modalview
作为隐式展开的可选选项,比如,var modalview : ModalViewController!
在访问之前,请检查是否已将任何值分配给
modalview
。如果你没有,这将导致崩溃。2。接下来,您创建了一个
outlet
的modalCustomAlert
,@IBOutlet weak var modalCustomAlert: UITextView!
这也是一个隐式展开选项。检查
outlet
是否正确连接。如果不是,它将引发运行时异常。如果隐式展开的可选项为nil并尝试访问其
包装的值,将触发运行时错误。结果就是
就像你在一个普通的可选的后面放一个感叹号
不包含值。
编辑-1:
var modalview = ModalViewController()
上面的代码无法连接
outlets
中的ModalViewController
。这就是modalCustomAlert
是nil
并导致异常的原因。使用故事板创建
modalview
,let modalview = storyboard.instantiateViewController(withIdentifier: "ModalViewController")
不过有一个问题。如果它们都是
modalview
类型,那么分别创建myAlert
和ModalViewController
的原因是什么?编辑-2:
我认为甚至不需要创建
modalview
。只需在获得异常的行使用myAlert
视图。所以ViewController
的代码是这样的,class ViewController: UIViewController {
//....
@IBAction func Onclick(_ sender: Any) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myAlert = storyboard.instantiateViewController(withIdentifier: "ModalViewController") as! ModalViewController
myAlert.modalPresentationStyle = .overCurrentContext
myAlert.modalTransitionStyle = .crossDissolve
myAlert.modalCustomAlert.text = "test test test text"
self.present(myAlert, animated: true, completion: nil)
}
}
编辑-3:
明白了。只是没有意识到你正在访问modalCustomAlert之前,出口被创建。
首先,在
ModalViewController
中创建一个属性text
。在viewDidLoad()
中,将这个text
添加为modalCustomAlert.text
,即。class ModalViewController : UIViewController {
//rest of the code....
var text: String? //here....
override func viewDidLoad() {
super.viewDidLoad()
modalCustomAlert.layer.cornerRadius = 8
self.modalCustomAlert.text = text //here....
}
}
现在,当创建
alertView
时,替换myAlert.modalCustomAlert.text = "test test test text"
具有
myAlert.text = "test test test text"
关于ios - 模态视图 Controller 中的文本在 View Controller 中未更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57781882/