ios - কীভাবে টেবিলভিউ সেলটি স্পিডে স্পর্শ বা ক্লিক করে সনাক্ত করা যায়




swift uitableview (6)

আমি TableView নির্বাচিত আইটেমের index পেতে এবং তার পরে কিছু ক্রিয়াকলাপ শুরু করার চেষ্টা করছি। দুর্ভাগ্যক্রমে আমি যে বেশিরভাগ সমাধান পেয়েছি তা বেশিরভাগ অবজেক্টিভ-সি বা কার্যকর হয় না।

মেথড func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) cell লেবেল প্রিন্ট করবেন না ..

কেউ আমাকে দয়া করে সাহায্য করতে পারেন?

import UIKit
import ResearchKit

class TaskListViewController: UIViewController, UITableViewDataSource {

    let tasks=[("Short walk"),
        ("Audiometry"),
        ("Finger tapping"),
        ("Reaction time"),
        ("Spatial span memory")
    ]


    //how many sections are in your table
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    //return int how many rows
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return tasks.count
    }

    //what are the contents

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell = UITableViewCell()

        var (testName) = tasks[indexPath.row]
        cell.textLabel?.text=testName
        return cell
    }

    // give each table section a name

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

        return "Tasks"

    }

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

        let indexPath = tableView.indexPathForSelectedRow();

        let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!

        println(currentCell.textLabel!.text)
    }


    override func viewDidLoad() {
        super.viewDidLoad()

    }  
}

কয়েকবার চেষ্টা করার পরে আমি কোডটি টিউটোরিয়াল থেকে খুঁজে পেয়েছি তার থেকে অন্যটিতে পরিবর্তন করেছি। এবং এটি খুব কার্যকর হয় না। এখন আমি ভাবছি এটি আইওএস সিমুলেটারের সাথে সমস্যা ...

import UIKit
import ResearchKit

class TaskListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet
    var tableView: UITableView?
    var items: [String] = ["We", "Heart", "Swift"]

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
    }


    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.items.count;
    }

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

        cell.textLabel?.text = self.items[indexPath.row]

        return cell
    }

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        println("You selected cell #\(items[indexPath.row])!")
    }

}


আপনি যদি ঘর থেকে মানটি চান তবে আপনাকে didSelectRowAtIndexPath ঘরটি পুনরায় তৈরি করতে হবে না

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    println(tasks[indexPath.row])
}

টাস্ক নিম্নরূপ হবে:

let tasks=["Short walk",
    "Audiometry",
    "Finger tapping",
    "Reaction time",
    "Spatial span memory"
]

এছাড়াও আপনাকে cellForRowAtIndexPath সেট করতে হবে cellForRowAtIndexPath পরীক্ষা করতে হবে।

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath) as UITableViewCell
    var (testName) = tasks[indexPath.row]
    cell.textLabel?.text=testName
    return cell
}

আশা করি এটা সাহায্য করবে.


আমি প্রতিবার স্ক্রু আপ! কেবলমাত্র নিশ্চিত হয়ে নিন যে tableView প্রতিনিধি এবং dataSource ঘোষিত হয়েছে। তারপরে আমি প্রত্যাবর্তিত ডেটা সিমুলেট করার জন্য সাধারণত কয়েকটি অ্যারে তৈরি করি এবং তারপরে সেখান থেকে নিয়ে যাই!

//******** Populate Table with data ***********
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? SetupCellView
    cell?.ControllerLbl.text = ViewContHeading[indexPath.row]
    cell?.DetailLbl.text = ViewContDetail[indexPath.row]
    cell?.StartupImageImg.image = UIImage(named: ViewContImages[indexPath.row])
    return cell!
}

কয়েকটি ঘটনার দরকার যা ...

  1. ভিউ কন্ট্রোলারের জন্য UITableViewDelegate টাইপ প্রসারিত করা UITableViewDelegate

  2. ভিউ কন্ট্রোলারকে didSelectRowAt ফাংশন অন্তর্ভুক্ত করতে হবে।

  3. টেবিল ভিউতে অবশ্যই তার প্রতিনিধি হিসাবে নির্ধারিত ভিউ নিয়ন্ত্রণকারী থাকতে হবে have

নীচে একটি জায়গা যেখানে ডেলিগেট বরাদ্দ করতে পারে (ভিউ কন্ট্রোলারের মধ্যে)।

override func loadView() {
    tableView.dataSource = self
    tableView.delegate = self
    view = tableView
}

এবং didSelectRowAt ফাংশনটির একটি সাধারণ বাস্তবায়ন।

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    print("row: \(indexPath.row)")
}

টেবিলভিউ প্রতিনিধি এবং ডেটাসোর্স উত্তরাধিকারী। আপনার যা প্রয়োজন প্রতিনিধিগুলি প্রয়োগ করুন।

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
    }

এবং অবশেষে এই প্রতিনিধি বাস্তবায়ন

     func tableView(_ tableView: UITableView, didSelectRowAt  
     indexPath: IndexPath) {
     print("row selected : \(indexPath.row)")
  }

টেবিলভিউ সেলটিতে অ্যারে থেকে কোনও উপাদান পেতে, স্পিডে স্পর্শ বা ক্লিক করা হয়েছে

func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath) as UITableViewCell
    cell.textLabel?.text= arr_AsianCountries[indexPath.row]
    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let indexpath = arr_AsianCountries[indexPath.row]
print("indexpath:\(indexpath)")
}

সুইফট ৩.০ এ

আপনি এটি প্রতিনিধি পদ্ধতির মাধ্যমে টেবিলভিউর ঘরের স্পর্শ / ক্লিকের জন্য ইভেন্টটি সন্ধান করতে পারেন। পাশাপাশি, ঘরটির বিভাগ এবং সারি মানটি এটির মতো খুঁজে পেতে পারেন।

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
       print("section: \(indexPath.section)")
       print("row: \(indexPath.row)")
}