【发布时间】:2016-04-02 09:19:35
【问题描述】:
我知道,我知道这已经被问了很多次了。很多次。我还找到了this question,但它建议的解决方案对我不起作用。
我只是想构建一个应用程序来演示如何在UIKit 中使用这些东西(以防我以后想使用它们。我可以复制代码)。
我创建了一个视图控制器,其中包含一个表视图。我编写了一个名为PrototypeTableController 的类来充当我在情节提要中创建的视图控制器的视图控制器类。
当用户点击其中一个单元格时,我希望显示另一个视图控制器,称为Prototype Table Content。如果您点击不同的单元格,则会显示不同的文本。
在故事板中是这样的:
当用户点击不同的单元格时,Prototype Table Content 中的标签文本会有所不同。这意味着我需要将数据从一个视图控制器发送到另一个。
上面提到的帖子建议我应该给segue一个标识符,所以我做了:
这是我的代码:
表格视图的视图控制器类:
class PrototypeTableController: UIViewController, UITableViewDataSource, UITableViewDelegate {
let data = ["Cell1", "Cell2", "Cell3", "Cell4", "Cell5"]
let contents = ["Hello", "Nice", "OMG", "Jesus", "Peace"]
var content: String?
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = data[indexPath.row]
return cell
}
func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String? {
return "This is a prototype table view created by Sweeper"
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "my table"
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
content = contents[indexPath.row]
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("showContent", sender: tableView)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showContent" {
let destination = segue.destinationViewController as! PrototypeTableContentViewController
destination.contentString = content
}
}
}
Prototype Table Content 视图的视图控制器类:
class PrototypeTableContentViewController: UIViewController {
@IBOutlet var tableContent: UILabel!
var contentString: String?
override func viewDidLoad() {
super.viewDidLoad()
tableContent.text = contentString
}
}
我想我做了上面提到的帖子中建议的所有事情。我添加了一个标识符,我称之为performSegueWithIdentifier
,我也取消了点击后的单元格。
但是,它只是没有转到其他视图控制器!它保持在同一个控制器上!像这样:
【问题讨论】:
-
推送视图控制器而不是以编程方式添加 segue
-
当表没有导航控制器@DivyanshuSharma时,不会发生推送
-
我有一个导航视图控制器! @Mr.T
-
你放断点了吗?是否为 segue 做准备?
-
如果 segue!.identifier == 或 if( segue.identifier == ) 试试这个
标签: ios iphone swift uitableview