Ios 如何在多个屏幕的过程中重用视图控制器?
我正在开发一个类似于聊天的应用程序,它可以问一些问题,用户可以在哪里回答 每个问题都有自己的屏幕,用户回答问题后,会有一个按钮导航到下一个屏幕 所有的屏幕几乎都是一样的。UILabel和输入字段。现在我想知道是否有一种方法可以重用这个视图,所以我不必创建多个完全相同的视图控制器Ios 如何在多个屏幕的过程中重用视图控制器?,ios,swift,Ios,Swift,我正在开发一个类似于聊天的应用程序,它可以问一些问题,用户可以在哪里回答 每个问题都有自己的屏幕,用户回答问题后,会有一个按钮导航到下一个屏幕 所有的屏幕几乎都是一样的。UILabel和输入字段。现在我想知道是否有一种方法可以重用这个视图,所以我不必创建多个完全相同的视图控制器 这可能吗?我应该寻找什么呢?您可以通过以下方式进行: 在重用视图控制器中创建变量: var question: String! 按钮操作需要执行以下步骤: @IBAction func nextQuestionAct
这可能吗?我应该寻找什么呢?您可以通过以下方式进行:
var question: String!
@IBAction func nextQuestionAction() {
performSegue(withIdentifier: "NextQuestionSegue", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
if segue.identifier == "NextQuestionSegue" {
guard let destinationVC = segue.destination as? ReuseViewController else { return }
destinationVC.question = "Question goes here"
}
}
这就是它的工作原理。关于我的想象,在PageViewController
问题视图控制器中有一个屏幕流。因此,您可以使用一个UIViewControllerTitleInputViewController
来公开UITextViewDelegate的闭包,以及应答提交操作回调和两个属性,一个用于UILabel,一个用于UIField
var textFieldDidChangeCallback:(字符串?->Void
:可用于显示字段验证消息
var didSubmitAnswerCallback:(字符串?->Void
:可用于显示字段验证消息和/或显示下一个/上一个控制器
@IBOutlet var titleLabel:UILabel代码>:可用于设置标题文本、字体和文本颜色
@IBOutlet var inputField:UITextField代码>:可用于设置标题文本、字体、验证错误消息和文本颜色
然后让此问题视图控制器创建此标题的多个实例,并使用这些回调来管理和显示它们。确保这是可能的
您可以通过编程方式实例化ViewController,并将其推送到导航控制器中,或以您想要的方式显示。为此,您可以使用:
let nextVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "formViewController")
其中,“Main”是故事板的名称,标识符是您在该故事板上为该页面设置的标识符
现在您有了我们的viewController(将其转换为您的特定类型as!FormViewController
),您可以根据需要设置属性。(标签的文本或文本字段的代理。)
如果这些表单的顺序是固定的,那么您还可以在故事板上放置多个VCs,将它们链接在一起,并将它们的类设置为同一个ViewController类。然后将插座连接到该VC中的相同字段 您可以使用容器视图加载公共viewcontroller