【发布时间】:2019-08-02 00:24:44
【问题描述】:
我向我的故事板添加了一个带有一些简单表单元素的视图控制器 (vc2),并从现有的 tableviewcontroller (vc1) 进行了 segue ctrl-draging,这是由尾随滑动按钮触发的
我可以在调试器中看到打印函数的输出(在下面的 vc2 代码中),但我的表单元素不可见。由于某种原因,我不得不手动设置默认为黑色的背景颜色,而不是故事板上设置的颜色。我认为这与我加载 vc2 的方式有关,但是我尝试将代码更改为正常的 performSegueWithIdentifier 导致了
'NSInvalidArgumentException',原因:'Receiver() 与 标识符
然后我删除并重新制作了segue,但没有任何效果。所以我把代码改回了这个,它可以工作,但不能渲染故事板元素。
func clickView(forRowAtIndexPath indexPath: IndexPath) {
let myContents = UnitComponents[indexPath.row]
print("Clicked Report \(self.ProjectID) \(self.ShipListID) \(self.UnitName) \(myContents.sku)")
self.Sku = myContents.sku
let vc = ComponentViewController()
vc.Sku = myContents.sku
navigationController?.pushViewController(vc, animated: true)
}
这是vc2代码
import UIKit
class ComponentViewController: UIViewController {
var Sku = ""
var UnitName = ""
var ShipListID = ""
var ProjectID = ""
@IBOutlet var damageDesc: UITextView!
@IBOutlet var repairCost: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
print("Hello World \(Sku) \(UnitName) \(ShipListID) \(ProjectID)");
// Do any additional setup after loading the view.
}
@IBAction func saveReport(_ sender: Any) {
print("damageDesc \(String(describing: damageDesc ?? nil))")
print("repairCost \(String(describing: repairCost ?? nil))")
}
}
如何修复我的代码,以便加载情节提要布局等并且我可以在应用中看到表单元素?
这是转到另一个视图控制器的错误方式吗?我问是因为似乎围绕这个主题的一些 SO 问题表明它没有正确调用情节提要。我正在寻找如何执行此操作的 swift 5 示例,并且仅找到对 instantiateViewControllerWithIdentifier("ViewController") 的引用,这似乎不在 swift 5 中
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = ShippingUnitsTableViewController()
vc.ShipListID = ShipLists[indexPath.row].ListID
vc.ProjectID = ProjectID
navigationController?.pushViewController(vc, animated: true)
}
【问题讨论】:
-
此行错误:
let vc = ComponentViewController()见programmingios.net/dont-make-a-new-instance-by-mistake-2