我正在制作一个应用程序,每次按下下一个按钮时都会更改情节提要的文本,但是我希望每次按下下一个按钮时都使用segue类型的动画
我尝试调用一个指向视图控制器的segue,但它名为SIGABART
public func segue() {
var slide: [String] = GetText().Main(text: .info(0, 0))
print(slide)
SectionViewController().setValues(title: slide[1], buttonTitle: slide[3], body: slide[2])
performSegue(withIdentifier: slide[0], sender: nil)
}
我也尝试过
let vc = SectionViewController() //my view controller class
self.present(vc, animated: true, completion: nil)
但是在尝试更新标签时会说Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
我希望视图控制器会随着动画再次弹出,但是它可能因SIGABART而崩溃,原因可能是视图控制器不“拥有” segue
答案 0 :(得分:0)
您可以尝试以下操作:
let vc = SectionViewController()
vc.textForLabel = "test"
self.present(vc, animated: true, completion: nil)
然后在您的SectionViewController viewDidLoad方法中,只需
self.yourLabel.text = self.textForLabel
我认为您崩溃是因为您尝试更新标签上的文本,但是标签未加载并准备就绪 因此,决定是要保存您的数据(例如本示例中的文本),并在加载视图时更新UI-您的标签将在此处加载。
答案 1 :(得分:0)
不是像Segue
那样使用SectionViewController
以编程方式显示SectionViewController
的另一个实例,
class SectionViewController: UIViewController {
@IBOutlet weak var label: UILabel!
func setValues(title: String, buttonTitle: String) {
label.text = title
//add your code...
}
func showSectionVC() {
if let vc = self.storyboard?.instantiateViewController(withIdentifier: "SectionViewController") as? SectionViewController {
vc.setValues(title: "", buttonTitle: "")
self.present(vc, animated: true, completion: nil)
}
}
}
从您要在已显示的showSectionVC()
中显示SectionViewController
的任何地方呼叫SectionViewController
。
此外,不要忘记正确连接outlet
中label
的{{1}}的情况。