arrays - मैं स्विफ्ट का उपयोग करके दो अलग-अलग सरणी के साथ टेबलव्यू में दो अनुभाग कैसे बना सकता हूं?




uitableview swift (2)

मेरे पास दो एरे डेटा 1 और डेटा 2 हैं और मैं इनमें से प्रत्येक के भीतर डेटा को पॉप्युलेट करना चाहता हूं (उनमें स्ट्रिंग्स हैं) दो अलग-अलग खंडों में एक टेबलव्यू में। पहले खंड में "कुछ डेटा 1" शीर्षक होना चाहिए और दूसरा खंड "KickAss" शीर्षक होना चाहिए।

मेरे पास पहले सरणी से डेटा के साथ पॉप्युलेटिंग दोनों अनुभाग हैं (लेकिन बिना किसी शीर्षक के)।

मेरा कोड अब तक है:

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

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        var rowCount = 0
        if section == 0 {
            rowCount = Data1.count
        }
        if section == 1 {
            rowCount = Data2.count
        }
        return rowCount
    }
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
        let ip = indexPath
        cell.textLabel?.text = Data1[ip.row] as String
        return cell
    }

cellForRowAtIndexPath विधि में, क्या मेरे लिए किसी भी तरह से अनुभाग की पहचान करना संभव है जैसे मैंने नंबर OfRowsInSection विधि में किया था? इसके अलावा, मैं प्रत्येक खंड में शीर्षक कैसे दे सकता हूं? धन्यवाद

https://code.i-harness.com


आप indexPath.section को देखकर निर्धारित कर सकते हैं कि आप किस अनुभाग में हैं। शीर्षक निर्दिष्ट करने के लिए, फ़ंक्शन को ओवरराइड करें

func tableView(tableView: UITableView!, titleForHeaderInSection section: Int) -> String!

आप मेरे पिछले उत्तर के विकल्प के रूप में, किसी सेक्शन के डेटा को पकड़ने के लिए एक Struct बना सकते हैं। उदाहरण के लिए:

struct SectionData {
    let title: String
    let data : [String]

    var numberOfItems: Int {
        return data.count
    }

    subscript(index: Int) -> String {
        return data[index]
    }
}

extension SectionData {
    //  Putting a new init method here means we can
    //  keep the original, memberwise initaliser.
    init(title: String, data: String...) {
        self.title = title
        self.data  = data
    }
}

अब आपके व्यू कंट्रोलर में आप अपना सेक्शन डेटा सेट कर सकते हैं:

lazy var mySections: [SectionData] = {
    let section1 = SectionData(title: "Some Data 1", data: "0, 1", "0, 2", "0, 3")
    let section2 = SectionData(title: "KickAss", data: "1, 0", "1, 1", "1, 2")

    return [section1, section2]
}()

सेक्शन हेडर

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return mySections.count
}

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

मेरे पिछले उत्तर की तुलना में, अब आपको data में सरणी की संख्या के लिए headerTitles की संख्या से मेल खाने की चिंता करने की आवश्यकता नहीं है।

टेबल व्यू सेल

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return mySections[section].numberOfItems
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellTitle = mySections[indexPath.section][indexPath.row]

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
    cell.textLabel?.text = cellTitle

    return cell
}




sections