左からスライドするメニューを持つアプリに取り組んでいます。UITableViewとNSObjectを使用してプログラムで構築されたメニュー。スライド アウト メニューに項目を追加することはできましたが、Interface Builder を使用せずに識別子を使用してセグエを作成する方法がわかりません。
これが私のtableViewでやろうとしていることです:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cellForRow = tableView.cellForRowAtIndexPath(indexPath)
let cellLabel = cellForRow?.textLabel?.text
delegate?.sideBarControlDidSelectRow(indexPath, cellName: cellLabel!)
if (cellLabel == "Item1") {
self.performSegueWithIdentifier("item1Settings", sender: nil)
} else {
self.performSegueWithIdentifier("item2Settings", sender: nil)
}
}
( 要点: SideBarTableViewController )
メニューのセルをクリックすると、次のエラーが表示されます。
2015-06-11 18:35:28.720 SideBarApp[2862:1111870] * キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。 0x193aac0e4 0x186fe4c00 0x10000b030 0x10000b108 0x186df1474 0x186eab790 0x186d4c240 0x186cbc6ec 0x1822402a4 0x18223d230 0x18223d610 0x1821692d4 0x18b97f6fc 0x186d2efac 0x1000147cc 0x19412aa08) libc++abi.dylib: terminating with uncaught exception of type NSException
スタックを検索した後、Objective-C でいくつかの解決策を見つけましたが、このシナリオの Swift では何も見つかりませんでした。
プログラムで作成された UITableView からどのようにセグエしますか?
これは、プログラムで UITableView をアセンブルする場所です。
SideBar.swift ファイル全体を表示
func setupSideBar(){
sideBarContainerView.frame = CGRectMake(-barWidth - 1, originView.frame.origin.y, barWidth, originView.frame.size.height)
sideBarContainerView.backgroundColor = UIColor.clearColor()
sideBarContainerView.clipsToBounds = false
originView.addSubview(sideBarContainerView)
let blurView:UIVisualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Light))
blurView.frame = sideBarContainerView.bounds
sideBarContainerView.addSubview(blurView)
sideBarTableViewController.delegate = self
sideBarTableViewController.tableView.frame = sideBarContainerView.bounds
sideBarTableViewController.tableView.clipsToBounds = false
sideBarTableViewController.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
sideBarTableViewController.tableView.backgroundColor = UIColor.clearColor()
sideBarTableViewController.tableView.scrollsToTop = false
sideBarTableViewController.tableView.contentInset = UIEdgeInsetsMake(sideBarTableViewTopInset, 0, 0, 0)
sideBarTableViewController.tableView.reloadData()
sideBarContainerView.addSubview(sideBarTableViewController.tableView)
}
ここで私はそれを呼んでいます:
ViewController.swift (初期ビュー)
override func viewDidLoad() {
super.viewDidLoad()
imageView.image = UIImage(named: "image2")
sideBar = SideBar(sourceView: self.view, menuItems: ["first item", "second item", "funny item", "another item"])
sideBar.delegate = self
}