I'm attempting for the first time to build a tableView that's grouped rather than plain but having issues with the information that is shown when a cell is tapped being incorrect.

First I've created an array and this array is used to give my groups their titles. Next I have an array that holds 4 more arrays each holding 8 objects apart from the last one which only has 1 and these 4 arrays are my sections for the groups.

When the app is run the group table shows up exactly as it should but when you click a particular row it may display the information that should be for a different row. I am removing some of the objects from the arrays simply to make the code shorter for you to see here.

Rune:

```
import UIKit

struct Rune {
    var runeName: String
    var runeImage: UIImage
    var runeDescription: String

}

```

ViewController:

```
import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var tableView: UITableView!

    var runeTitle = [["Freyr/Freya's Aett"], ["Heimdall's Aett"], ["Tyr's Aett"], ["Additional Runes"]]

    let runes = [[Rune(runeName: "Fehu", runeImage: UIImage(named: ("Fehu.png"))!, runeDescription: "(F: Domestic cattle, wealth.) Possessions won or earned, earned income, luck. Abundance, financial strength in the present or near future. Sign of hope and plenty, success and happiness. Social success. Energy, foresight, fertility, creation/destruction (becoming).\n\n Fehu Reversed or Merkstave: Loss of personal property, esteem, or something that you put in effort to keep. It indicates some sort of failure. Greed, burnout, atrophy, discord. Cowardice, stupidity, dullness, poverty, slavery, bondage."),
                  Rune(runeName: "Wunjo", runeImage: UIImage(named: ("Wunjo.png"))!, runeDescription: "(W or V: Joy.) Joy, comfort, pleasure. Fellowship, harmony, prosperity. Ecstasy, glory, spiritual reward, but also the possibility of going \"over the top\". If restrained, the meaning is general success and recognition of worth.\n\n Wunjo Reversed or Merkstave: Stultification, sorrow, strife, alienation. Delirium, intoxication, possession by higher forces, impractical enthusiasm. Raging frenzy, berzerker.")],

                 [Rune(runeName: "Hagalaz", runeImage: UIImage(named: ("Hagalaz.png"))!, runeDescription: "(H: Hail.) Wrath of nature, destructive, uncontrolled forces, especially the weather, or within the unconscious. Tempering, testing, trial. Controlled crisis, leading to completion, inner harmony. Hagalaz Merkstave (Hagalaz cannot be reversed, but may lie in opposition): Natural disaster, catastrophe. Stagnation, loss of power. Pain, loss, suffering, hardship, sickness, crisis."),
                  Rune(runeName: "Sowilo", runeImage: UIImage(named: ("Sowilo.png"))!, runeDescription: "(S: The sun.) Success, goals achieved, honor. The life-force, health. A time when power will be available to you for positive changes in your life, victory, health, and success. Contact between the higher self and the unconscious. Wholeness, power, elemental force, sword of flame, cleansing fire. Sowilo Merkstave (Sowilo cannot be reversed, but may lie in opposition): False goals, bad counsel, false success, gullibility, loss of goals. Destruction, retribution, justice, casting down of vanity. Wrath of god.")],

                 [Rune(runeName: "Tiwaz", runeImage: UIImage(named: ("Tiwaz.png"))!, runeDescription: "(T: Tyr, the sky god.) Honor, justice, leadership and authority. Analysis, rationality. Knowing where one's true strengths lie. Willingness to self-sacrifice. Victory and success in any competition or in legal matters.\n\n Tiwaz Reversed or Merkstave: One's energy and creative flow are blocked. Mental paralysis, over-analysis, over-sacrifice, injustice, imbalance. Strife, war, conflict, failure in competition. Dwindling passion, difficulties in communication, and possibly separation."),
                  Rune(runeName: "Othala", runeImage: UIImage(named: ("Othala.png"))!, runeDescription: "(O: Ancestral property.) Inherited property or possessions, a house, a home. What is truly important to one. Group order, group prosperity. Land of birth, spiritual heritage, experience and fundamental values. Aid in spiritual and physical journeys. Source of safety, increase and abundance.\n\n Othala Reversed or Merkstave: Lack of customary order, totalitarianism, slavery, poverty, homelessness. Bad karma, prejudice, clannishness, provincialism. What a man is bound to.")],

                  [Rune(runeName: "Blank Rune", runeImage: UIImage(named: ("Blank.png"))!, runeDescription: "There is no historical support for a \"Blank Rune\" in runic divination. It was invented in the 1980's. It should not be used in a rune casting. If you bought a rune set with a blank piece, save it in case you lose another rune piece, but don't use it in rune casting.")]]

    func numberOfSections(in tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return runes.count
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of rows
    return runes[section].count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    // Configure the cell...

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell;

    let item = runes[indexPath.section][indexPath.row]
    cell.imageView?.image = item.runeImage
    cell.textLabel?.text = item.runeName
    cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator

    return cell
}

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    return String(describing: runeTitle[section][0])
}

var clickedIndex = 0
var section = 0

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.clickedIndex = indexPath.row
    self.section =  indexPath.section

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "segue" {

        let runeArray = runes[section][clickedIndex]
        let destinationVC = segue.destination as! SecondViewController
        destinationVC.selectedRune = runeArray
    }
}

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

    }

}

```

SecondViewController:

```
import UIKit

class SecondViewController: UIViewController {

    var selectedRune: Rune!

    @IBOutlet weak var runeNameLabel: UILabel!
    @IBOutlet weak var runeImage: UIImageView!
    @IBOutlet weak var runeDescriptionLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        runeNameLabel.text = selectedRune.runeName
        runeImage.image = selectedRune.runeImage
        runeDescriptionLabel.text = selectedRune.runeDescription
    }

}

```