2015-04-06 12 views
-1

我以为我会用swift构建一个ipad应用程序。我正在使用的应用程序是一个主 - 细节应用程序。在主表中,我有两行: “Window1”和“Window2”以及两个详细视图。我为两个细节视图创建了一个故事板segue(1是默认视图)。这两个段落被称为“showDetail”和“showWindow2”。在主从应用程序中使用Swift,我如何以编程方式切换细节视图?

视频我在YouTube上观看用下面的代码从主选项卡的用户引导到适当的详细页面:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 2 
    } 

    override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
     var row = indexPath.row 

     switch row 
     { 
     case 1: 
      self.performSegueWithIdentifier("showDetail", sender: self) 
     default: 
      self.performSegueWithIdentifier("showWindow2", sender: self) 
     } 
    } 

其工作时,我有在母版页只有两排。 上面的代码似乎并不当我有母版页上3行工作(通过添加一行标签“Window3”):

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
      return 1 
     } 

     override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
      return 3 
     } 

     override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
      var row = indexPath.row 

      switch row 
      { 
      case 1: 
       self.performSegueWithIdentifier("showDetail", sender: self) 
      case 2: 
       self.performSegueWithIdentifier("showWindow2", sender: self) 
      default: 
       self.performSegueWithIdentifier("showWindow2", sender: self) 
      } 
     } 

我想我遇到的问题是,值的“行”似乎改变取决于我目前在哪一行。我的意思是当我调试时,选择“Window1”,“Window2”或“Window3”时的行值似乎在0,1和2之间变化,并且我的代码不会显示正确的详细信息页面。

我不知道我在这里错过了什么。任何人都可以请帮我吗?

+2

我看到您正在使用'didDeselectRowAtIndexPath'。你是不是指'didSelectRowAtIndexPath'? – marosoaie 2015-04-06 08:56:58

+1

Segue标识符与window2&window3相同。对于window3你也想显示window2的细节?你的意思是didSelectRowAtIndexPath? – 2015-04-06 08:59:30

+0

谢谢你。当弹出自动填充窗口时,我选择了错误的方法....我的意思是使用didSelectRowAtIndexPath修复了我的问题。 – Woody 2015-04-06 13:22:54

回答

0

您的switch语句似乎是错误的。

switch row{ 
    case 1: 
     self.performSegueWithIdentifier("showDetail", sender: self) 
    case 2: 
     self.performSegueWithIdentifier("showWindow2", sender: self) 
    default: 
     self.performSegueWithIdentifier("showWindow2", sender: self) 
} 

在您的switch语句中使用,所使用的默认行(如果按第一排将被使用)self.performSegueWithIdentifier(“showWindow2”, sender: self)可以使用相同的Segue公司。

改变case 2 Segue公司的Segue公司,会告诉你的第三个细节视图应该解决您的问题

此外,你还可以使用case 0,看看是否有人按下你的第一行。虽然你的解决方案可以工作,但如果第一行被按下,它将触发你的default声明,如果你有case 0,如果你按下第一行而不是默认值,这将被触发。这将导致default发现任何错误

相关问题