IOS StoryBoard multiple Segue's from a TableCell

后端 未结 4 1681
眼角桃花
眼角桃花 2020-12-12 15:15

Hi I have a storyboard and am able to show a detail view when clicking on a table cell. I want to add extra functionality so that depending on what cell I click I show a dif

相关标签:
4条回答
  • 2020-12-12 15:34

    In swift 3.1, with a segment control of two states

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    var segue: String!
    if selectedSegment == 0 {
        segue = "segue1"
    } else  {
        segue = "segue2"
    }
    self.performSegue(withIdentifier: segue, sender: self)
    

    }

    0 讨论(0)
  • 2020-12-12 15:35

    Don't try to hook up the Segues to a tableviewcell in this case. Hook them up to the View Controller itself.

    0 讨论(0)
  • 2020-12-12 15:42

    Here's a sample code from my demo project:

    -         (void)tableView:(UITableView *)tableView
      didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSString *segueName = nil;
    
        if (type == kCore) {
            segueName = @"segue1";
        } else if (type == kStdlib) {
            segueName = @"segue2";
        }
    
        [self performSegueWithIdentifier: segueName sender: self];
    }
    

    type is a property of view controller, which determines which segue should be performed.

    As the above answer said, the key is to create segue by linking two view controllers.

    0 讨论(0)
  • 2020-12-12 15:51

    Don't try to create multiple segues from a TableCell to other view controllers, you want to ctrl+drag from the view controller icon below the view controller in the storyboard interface to the viewcontrollers you want to segue to. Then it will allow you to set up multiple segues.

    screenshot showing multiple segues

    and then to actually make the segues work, you need to add identifiers to the segues themselves, which you can do by clicking on them and then giving it a name in the property inspector:

    giving segue an identifier

    then, for the example of TableCells, in your UITableViewDelegate, in

    -tableView:didSelectRowAtIndexPath: 
    

    you can use

    - (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender 
    

    to manually start a segue depending on your own logic of what segue should be chosen.

    0 讨论(0)
提交回复
热议问题