Select cell in TableView Section

£可爱£侵袭症+ 提交于 2019-12-13 06:14:21

问题


I have been searching for an answer on how to do this, but nothing seems straight forward, or the user wants to do something different(like selecting multiple cells).

Background: I am making an app about retrieving quotes everyday for different professions such as Reading, gardening, sports. I have a UITabBarController with 3 tabs.
First tab = Quote ; Second tab = Categories ; Third tab = Settings *

The Settings tab is a UITableView with 3 sections, and 2 cells in each section.

Problem: I want to make each cell go to a different destination. The first cell in the first section will just be a view controller with a slider(color slider to change text color)(will get to that later). How would I be able to accomplish this?

import UIKit

class settingsTab: UIViewController, UITableViewDelegate {

struct Objects {
    var sectionName : String!
    var sectionObjects : [String]!

}

var objectsArray = [Objects]()




override func viewDidLoad() {
    super.viewDidLoad()
    objectsArray = [Objects(sectionName: "Options", sectionObjects: ["Change color of text" , "Notifications"]),Objects(sectionName: "Extras", sectionObjects: ["Remove ads" , "Restore purchases"]),Objects(sectionName: "Support", sectionObjects: ["Rate this app" , "Email developer"]), Objects(sectionName: "Jordan Norris - Quote Daily 2016", sectionObjects: [])]



}

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell!

    cell.textLabel?.text = objectsArray[indexPath.section].sectionObjects[indexPath.row]


    cell.backgroundColor = UIColor.cyanColor()

    return cell


}

 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return objectsArray[section].sectionObjects.count
}

 func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return objectsArray.count

}

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?{
    return objectsArray[section].sectionName
}


 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {


}






}

This is settingsTab.swift, where the TableViewController is established. If you need any more information, just comment what you would like to be added and I'll edit this post immediately. Thank you in advance!


回答1:


Will the number of sections and items in the section change? If not, creating static cells and hooking up a segue to each cell to a different destination can be done with no code (all in Interface Builder).




回答2:


You can access each section and each row through your last function didSelectRowAtIndexPath using indexPath.section and indexPath.row. For example if you want to access the second section and the first row, you can do

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    print("Section \(indexPath.section), Row : \(indexPath.row)")
    if indexPath.section == 1 && indexPath.row == 0{
        //Code to implement View Controller to remove adds
        print("Remove Adds")
    }
}

Try selecting each row to show which section it prints and which row.



来源:https://stackoverflow.com/questions/37558333/select-cell-in-tableview-section

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!