带有 Segues 到多个视图的 Storyboard TableView
Storyboard TableView with Segues to Multiple Views
我在设计故事板时遇到问题。我目前在应用程序商店中有一个使用 XIB 文件设计的应用程序。我在 UIViewController 上放置了一个 tableView - 而不是 tableViewController - 为所选的每一行加载一个唯一的 viewController。
我正在尝试将此概念转换为故事板。我做了以下事情
在 Storyboard 中放置一个 UIViewController。
在 UI 上放置一个 UITableViewViewController 这样我就可以自定义 table 视图。
我尝试从 UITableViewCell 连接到多个 ViewController,但不允许。
我尝试从 UI 创建多个 segues ViewController - 我可以 - 但是当我点击单元格时,不会触发 segues。我尝试使用 didSelectRowAtIndexPath: 和 prepareForSegue:
由于这不起作用,我尝试使用 UITableViewController 创建一个项目,然后从 UITableViewController 创建多个 segues。然后我命名每个 segue 并使用 didSelectRowAtIndexPath: 方法来测试选定的单元格并调用 performSegueWithIdentifier: 但这没有用。当我点击单元格时,我会随机加载不正确的 viewController。我在下面复制了一些我的代码和一些屏幕截图。
我想知道我是否公然遗漏了一些明显的东西,或者我是否必须为此类项目恢复为 xib 格式?
override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)
{
if indexPath.row == 0
{
println("Segue1")
self.performSegueWithIdentifier("Segue1", sender: self)
}
else if indexPath.row == 1
{
println("Segue2")
self.performSegueWithIdentifier("Segue2", sender: self)
}
else if indexPath.row == 2
{
println("Segue3")
self.performSegueWithIdentifier("Segue3", sender: self)
}
}
保重,
乔恩
方法
override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)
在取消选择项目时调用。
要在选择项目时调用方法,请将方法名称更改为 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
我结合了艾伦的评论。最初我无法创建我需要的 segues。我创建了一个导航控制器,它使用我自己的包含 table 视图的视图控制器。然后我为原型单元创建了关联单元并将它们切换为静态单元。我只有有限的数量,当时只有 3 个。这使我能够创建故事板中适当视图的转场。然后我将单元格改回原型单元格并保持与 segues 的连接。剩下的就是在 table 视图中创建关联的 switch 语句以转到正确的 segue。只需确保您使用代码中列出的标识符命名您的 segues。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {
//Add cases here to move to different segues
switch indexPath.row{
case 0: self.performSegueWithIdentifier("courses", sender: self);
break;
case 1: self.performSegueWithIdentifier("finals", sender: self);
break;
case 2: self.performSegueWithIdentifier("academic", sender: self);
break;
default:
break
}
}
Swift3 代码
好吧,看看我用来根据单元格中设备类型的类型执行动态 segue 的代码。 :) 希望对您有所帮助。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let device = Cache.DEVICELIST[indexPath.row]
let deviceType = device.type
switch deviceType {
case "camera":
self.performSegue(withIdentifier: "DashCellToCamera", sender: self)
case "gateway" :
self.performSegue(withIdentifier: "DashCellToGateway", sender: self)
case "tracker" :
self.performSegue(withIdentifier: "DashCellToTracker", sender: self)
case "panicbutton" :
self.performSegue(withIdentifier: "DashCellToPanicButton", sender: self)
default:
break
//do nothing just ignore this
}
}
我在设计故事板时遇到问题。我目前在应用程序商店中有一个使用 XIB 文件设计的应用程序。我在 UIViewController 上放置了一个 tableView - 而不是 tableViewController - 为所选的每一行加载一个唯一的 viewController。
我正在尝试将此概念转换为故事板。我做了以下事情
在 Storyboard 中放置一个 UIViewController。
在 UI 上放置一个 UITableViewViewController 这样我就可以自定义 table 视图。
我尝试从 UITableViewCell 连接到多个 ViewController,但不允许。
我尝试从 UI 创建多个 segues ViewController - 我可以 - 但是当我点击单元格时,不会触发 segues。我尝试使用 didSelectRowAtIndexPath: 和 prepareForSegue:
由于这不起作用,我尝试使用 UITableViewController 创建一个项目,然后从 UITableViewController 创建多个 segues。然后我命名每个 segue 并使用 didSelectRowAtIndexPath: 方法来测试选定的单元格并调用 performSegueWithIdentifier: 但这没有用。当我点击单元格时,我会随机加载不正确的 viewController。我在下面复制了一些我的代码和一些屏幕截图。
我想知道我是否公然遗漏了一些明显的东西,或者我是否必须为此类项目恢复为 xib 格式?
override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)
{
if indexPath.row == 0
{
println("Segue1")
self.performSegueWithIdentifier("Segue1", sender: self)
}
else if indexPath.row == 1
{
println("Segue2")
self.performSegueWithIdentifier("Segue2", sender: self)
}
else if indexPath.row == 2
{
println("Segue3")
self.performSegueWithIdentifier("Segue3", sender: self)
}
}
保重,
乔恩
方法
override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)
在取消选择项目时调用。
要在选择项目时调用方法,请将方法名称更改为 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
我结合了艾伦的评论。最初我无法创建我需要的 segues。我创建了一个导航控制器,它使用我自己的包含 table 视图的视图控制器。然后我为原型单元创建了关联单元并将它们切换为静态单元。我只有有限的数量,当时只有 3 个。这使我能够创建故事板中适当视图的转场。然后我将单元格改回原型单元格并保持与 segues 的连接。剩下的就是在 table 视图中创建关联的 switch 语句以转到正确的 segue。只需确保您使用代码中列出的标识符命名您的 segues。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {
//Add cases here to move to different segues
switch indexPath.row{
case 0: self.performSegueWithIdentifier("courses", sender: self);
break;
case 1: self.performSegueWithIdentifier("finals", sender: self);
break;
case 2: self.performSegueWithIdentifier("academic", sender: self);
break;
default:
break
}
}
Swift3 代码
好吧,看看我用来根据单元格中设备类型的类型执行动态 segue 的代码。 :) 希望对您有所帮助。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let device = Cache.DEVICELIST[indexPath.row]
let deviceType = device.type
switch deviceType {
case "camera":
self.performSegue(withIdentifier: "DashCellToCamera", sender: self)
case "gateway" :
self.performSegue(withIdentifier: "DashCellToGateway", sender: self)
case "tracker" :
self.performSegue(withIdentifier: "DashCellToTracker", sender: self)
case "panicbutton" :
self.performSegue(withIdentifier: "DashCellToPanicButton", sender: self)
default:
break
//do nothing just ignore this
}
}