ইউআইটিএবলভিউসেল মুছতে সোয়াইপ যুক্ত করুন


144

আমি একটি দিয়ে একটি চেকলিস্ট আবেদন করছি UITableView। আমি ভাবছিলাম কীভাবে একটি মুছতে একটি সোয়াইপ যুক্ত করবেন UITableViewCell

এটি আমার ভিউকন্ট্রোলআর সুইফট:

import UIKit

class ViewController: UIViewController,  UITextFieldDelegate, UITableViewDelegate,      UITableViewDataSource {

var tableView: UITableView!
var textField: UITextField!
var tableViewData:Array<String> = []

// Define Colors

let lightColor: UIColor = UIColor(red: 0.996, green: 0.467, blue: 0.224, alpha: 1)
let medColor: UIColor = UIColor(red: 0.973, green: 0.388, blue: 0.173, alpha: 1)
let darkColor: UIColor = UIColor(red: 0.800, green: 0.263, blue: 0.106, alpha: 1)
let greenColor: UIColor = UIColor(red: 0.251, green: 0.831, blue: 0.494, alpha: 1)

init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    // Custom initialization
}

override func viewDidLoad() {
    super.viewDidLoad()

    //Set up table view

    self.tableView = UITableView(frame: CGRectMake(0, 100, self.view.bounds.size.width, self.view.bounds.size.height-100), style: UITableViewStyle.Plain)
    self.tableView.registerClass(MyTableViewCell.self, forCellReuseIdentifier: "myCell")
    self.tableView.backgroundColor = darkColor
    //self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
    self.tableView.delegate = self
    self.tableView.dataSource = self

    self.view.addSubview(self.tableView)

    //Set up text field

    self.textField = UITextField(frame: CGRectMake(0, 0, self.view.bounds.size.width, 100))
    self.textField.backgroundColor = lightColor
    self.textField.font = UIFont(name: "AvenirNext-Bold", size: 26)
    self.textField.delegate = self

    self.view.addSubview(self.textField)



}

//Table View Delegate

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {

    return tableViewData.count

}

func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

    var myNewCell: MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as MyTableViewCell
    myNewCell.text = self.tableViewData[indexPath.row]

    return myNewCell

}

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

    let mySelectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)

    //Colors

    mySelectedCell.detailTextLabel.textColor = UIColor.whiteColor()
    mySelectedCell.tintColor = UIColor.whiteColor()

    //Setup Details / Date

    let myDate:NSDate = NSDate()
    var myDateFormatter:NSDateFormatter = NSDateFormatter()
    myDateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle

    mySelectedCell.detailTextLabel.text = myDateFormatter.stringFromDate(myDate)
    mySelectedCell.accessoryType = UITableViewCellAccessoryType.Checkmark
    mySelectedCell.backgroundColor = greenColor

}

override func prefersStatusBarHidden() -> Bool {
    return true

}

//Text Field Delegate

func textFieldShouldReturn(textField: UITextField!) -> Bool {

    tableViewData.append(textField.text)
    textField.text = ""
    self.tableView.reloadData()
    textField.resignFirstResponder()
    return true

}

}

এবং এটি মাই টেবিলভিউ সেল.সুইফ্ট:

import UIKit

class MyTableViewCell: UITableViewCell {

let medColor: UIColor = UIColor(red: 0.973, green: 0.388, blue: 0.173, alpha: 1)

init(style: UITableViewCellStyle, reuseIdentifier: String) {
    super.init(style: UITableViewCellStyle.Subtitle, reuseIdentifier: reuseIdentifier)

    self.textColor = UIColor.whiteColor()
    self.backgroundColor = medColor
    self.selectionStyle = UITableViewCellSelectionStyle.None
}

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}

আমি iOS8 ডিপ্লোয়মেন্ট টার্গেট হিসাবে ব্যবহার করছি (এটি তারতম্যটি নিশ্চিত করবে না)।


2
দয়া করে "আইওএসের জন্য সারণী দেখুন প্রোগ্রামিং গাইড" পড়ুন। টেবিল ভিউ মুছে ফেলা নিয়ে কাজ করার জন্য একটি সম্পূর্ণ বিভাগ রয়েছে। এটি কার্যকর করার জন্য আপনি বেশ কয়েকটি প্রয়োজনীয় প্রতিনিধি পদ্ধতি অনুপস্থিত।
rmaddy

3
এফওয়াইআই - আপনার পোস্ট করা কোডের অর্ধেকটি প্রশ্নের সাথে সম্পর্কিত নয়। শুধুমাত্র প্রাসঙ্গিক কোড পোস্ট করুন।
rmaddy

উত্তর:


316

এই দুটি ফাংশন যুক্ত করুন:

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return true
}

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if (editingStyle == UITableViewCellEditingStyle.Delete) {
        // handle delete (by removing the data from your array and updating the tableview)
    }
}

সুইফট 3.0:

override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if (editingStyle == UITableViewCellEditingStyle.delete) {
        // handle delete (by removing the data from your array and updating the tableview)
    }
}

সুইফট 4.2

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if (editingStyle == .delete) {
        // handle delete (by removing the data from your array and updating the tableview)
    }
}

3
এখানে নুইস আইওএস প্রোগ্রামার - এই জাতীয় মৌলিক কার্যকারিতা পরিচালনা করার জন্য কোন পদ্ধতিগুলি প্রয়োগ করা প্রয়োজন তা শেখার কোনও ভাল উপায় আছে? ডকুমেন্টেশনটি আমার ভার্সনীয়দের জন্য কিছুটা ভার্জোজ এবং অনুসরণ করা শক্ত বলে মনে হচ্ছে।
লেস

4
@ ডেটায়াহ আপনি যদি "মুছুন" বোতামের পাঠ্যটি পরিবর্তন করতে চান তবে আপনি এই ফাংশনটি ওভাররাইড করতে পারেন , ফান্ট টেবিল ভিউ (টেবিলভিউ: ইউআইটিবেল ভিউ, শিরোনামফোর্ডডিলিট কনফার্মেশনবুটফোরআরএটআইডেক্সপথ সূচকপাথ: এনএসআইন্ডেক্সপথ) -> স্ট্রিং? আপনি এখানে যে পাঠ্যটি যুক্ত করতে চান তা return // ফিরিয়ে দিন}
রাচেল

1
সুইফট 3 কোডটিতে একটি বন্ধ হওয়া কোঁকড়ানো বন্ধনী অনুপস্থিত }। এটি নির্ধারণ করতে আমার কাছে মোট 5 মিনিট সময় লেগেছে: পি
ইব্রাহিম

1
@ লেস আপনি ড্যাশ নামে একটি অ্যাপ্লিকেশনটিতে উঁকি দিতে চাইতে পারেন। এটি আপনাকে ডকুমেন্টেশন সন্ধান করতে সক্ষম করে এবং এটি ওয়েব ব্রাউজ করার চেয়ে অনেক বেশি ছাপ ফেলে। এটি আপনার কম্পিউটারে স্থানীয়ভাবেও সঞ্চিত রয়েছে, যাতে আপনার জিনিসগুলি সন্ধান করতে ওয়েব অ্যাক্সেসের প্রয়োজন হয় না। আপনি অন্যান্য ভাষার জন্য ডকুমেন্টেশনও লোড করতে পারেন।
অ্যাড্রিয়ান

1
@ লস আইওএস এপিআই এতগুলি বিষয় দ্বারা পরিপূর্ণ যে এটি সমস্ত জানার পক্ষে এটি কার্যত অসম্ভব। ক্লিচ যতটা শোনাচ্ছে ততই আপনি অভিজ্ঞতা থেকে এই জাতীয় জিনিস শিখেন। আমি 6 বছর ধরে আইওএস করছি এবং আমি এখানে আপনার মতোই আছি কারণ আমি কীভাবে মুছে ফেলার জন্য সোয়াইপ যুক্ত করতে ভুলে গিয়েছিলাম: ^)
anon_nerd

30

আপনি এটি চেষ্টা করতে পারেন:

func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
    return true
}

func tableView(tableView: UITableView!, commitEditingStyle editingStyle:   UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
    if (editingStyle == UITableViewCellEditingStyle.Delete) {
        NamesTable.beginUpdates()
        Names.removeAtIndex(indexPath!.row)
        NamesTable.deleteRowsAtIndexPaths([indexPath], withRowAnimation: nil)
        NamesTable.endUpdates()

    }
}

2
জন্য ধন্যবাদ beingUpdates()এবং endUpdates()। আপনি এগুলি প্রায়শই দেখেন না এবং আমি কেবল দেখেছি তারা ডাব্লুডাব্লুডিসি সেরা অভ্যাসের আলোচনার অংশ।
কাকুবেই

এই জন্য আপনাকে ধন্যবাদ!! : ডি
নির্দোষ

27

আরেকটি উপায় যে আপনি "মুছে দিন" লেখা পরিবর্তন এবং আরও অনেক কিছু বোতাম জুড়তে যখন একটি সেল সহচরী করতে পারবেন ব্যবহার করা editActionsForRowAtIndexPath

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return true
}

func tableView(tableView: (UITableView!), commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: (NSIndexPath!)) {

}

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {

    var deleteAction = UITableViewRowAction(style: .Default, title: "Delete") {action in
       //handle delete
    }

    var editAction = UITableViewRowAction(style: .Normal, title: "Edit") {action in
        //handle edit
    }

    return [deleteAction, editAction]
}

canEditRowAtIndexPathএবং commitEditingStyleএখনও প্রয়োজনীয়, কিন্তু commitEditingStyleমুছে ফেলা হ্যান্ডেল করা হওয়ায় আপনি খালি রাখতে পারেন editActionsForRowAtIndexPath


1
শেষ ফাংশনটির স্বাক্ষরকে `ফানক টেবিলভিউ (টেবিলভিউ: ইউআইটিবেল ভিউ, এডিটেশনঅরফরআইটিইন্ডেক্সপথ সূচকপাথ: এনএসআইন্ডেক্সপথ) -> [ইউআইটিএবলভিউআরঅ্যাকশন] এ পরিবর্তন করতে হয়েছিল? Otherwise তবে অন্যথায় এটি কাজ করে না। ধন্যবাদ!
ক্র্যাশলোট

1
@ ক্র্যাশলোট যদি আপনার শ্রেণি উত্তরাধিকার সূত্রে আসে UITableViewControllerএবং আপনি যদি এই পদ্ধতিটিকে ওভাররাইড করে থাকেন তবে হ্যাঁ স্বাক্ষরটি অবশ্যই ফিরে আসতে হবে [UITableViewRowAction]?। যাইহোক, আপনি যখন উত্তরাধিকারসূত্রে নন UITableViewController, যখন পদ্ধতিটি ফিরে আসবে [AnyObject]?। ভেবেছি আমি কখন ব্যবহার করব তা পরিষ্কার করে ফেলব যাতে কে এই পড়েন কেবল অনুমান করা যায় না।
প্রবলভাবে

16
    import UIKit

    class ViewController: UIViewController ,UITableViewDelegate,UITableViewDataSource
    {
      var items: String[] = ["We", "Heart", "Swift","omnamay shivay","om namay bhagwate vasudeva nama"]
        var cell : UITableViewCell
}




    @IBOutlet var tableview:UITableView

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


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }




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


    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

        var cell = tableView.dequeueReusableCellWithIdentifier("CELL") as? UITableViewCell

        if !cell {
            cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "CELL")}



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

        return cell
        }
    func tableView(tableView: UITableView!, canEditRowAtIndexPath indexPath: NSIndexPath!) -> Bool {
        return true
    }

    func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) {
        if (editingStyle == UITableViewCellEditingStyle.Delete) {
            // handle delete (by removing the data from your array and updating the tableview)


            if let tv=tableView
            {



             items.removeAtIndex(indexPath!.row)
                tv.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)



        }
    }
}


}

10

এটি আইওএস 11 এবং সুইফট 4-এ নতুন বৈশিষ্ট্য।

রেফারেন্স লিঙ্ক:

ট্রেলিং সোয়াইপ:

@available(iOS 11.0, *)
override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let delete = UIContextualAction(style: .destructive, title: "Delete") { (action, sourceView, completionHandler) in
        print("index path of delete: \(indexPath)")
        completionHandler(true)
    }

    let rename = UIContextualAction(style: .normal, title: "Edit") { (action, sourceView, completionHandler) in
        print("index path of edit: \(indexPath)")
        completionHandler(true)
    }
    let swipeActionConfig = UISwipeActionsConfiguration(actions: [rename, delete])
    swipeActionConfig.performsFirstActionWithFullSwipe = false
    return swipeActionConfig
}

এখানে চিত্র বর্ণনা লিখুন


8

এটা ব্যবহার করো :

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if editingStyle == UITableViewCellEditingStyle.Delete {
        langData.removeAtIndex(indexPath.row) //langData is array from i delete values
        tableView.deleteRowsAtIndexPaths([indexPath],  withRowAnimation: UITableViewRowAnimation.Automatic)
    }
}

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


6

সুইফট 4 - @ উপলভ্য (আইওএস 11.0, *)

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let edit = UIContextualAction(style: .normal, title: "") { (action, view, nil) in
        let refreshAlert = UIAlertController(title: "Deletion", message: "Are you sure you want to remove this item from cart? ", preferredStyle: .alert)

        refreshAlert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { (action: UIAlertAction!) in

        }))

        refreshAlert.addAction(UIAlertAction(title: "No", style: .default, handler: { (action: UIAlertAction!) in
            refreshAlert .dismiss(animated: true, completion: nil)
        }))

        self.present(refreshAlert, animated: true, completion: nil)
    }
    edit.backgroundColor = #colorLiteral(red: 0.3215686275, green: 0.5960784314, blue: 0.2470588235, alpha: 1)
    edit.image = #imageLiteral(resourceName: "storyDelete")
    let config = UISwipeActionsConfiguration(actions: [edit])
    config.performsFirstActionWithFullSwipe = false
    return config
}

5

সুইফট 3:

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if (editingStyle == UITableViewCellEditingStyle.delete) {
        // delete data and row
        dataList.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)
    }
}

বাতিল বলতে আমি কীভাবে মুছুন বোতামটি পরিবর্তন করতে পারি কোনও ধারণা?
আলেক

আপনি যদি "মুছুন" বোতামের পাঠ্যটি পরিবর্তন করতে চান, আপনি এই ফাংশনটি ওভাররাইড করতে পারেন, ফানক টেবিল ভিউ (টেবিল ভিউ: ইউআইটিবেল ভিউ, শিরোনামফোর্ডডিলিট কনফার্মেশনবুটফোরফো রউএটিআইএনডেক্সপথ সূচকপাথ: এনএসআইন্ডেক্সপথ) -> স্ট্রিং? আপনি এখানে যে পাঠ্যটি যুক্ত করতে চান তা return // ফেরত দিন} # রাচেল
বিস্তা

5

কাস্টম শিরোনাম সহ সুইফট 3

        func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
                return true
            }

    //If you want to change title
            func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
                return "Cancel"
            }

            func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
                if (editingStyle == UITableViewCellEditingStyle.delete) {
// you might want to delete the item at the array first before calling this function
                    tableView.deleteRows(at: indexPath, with: .automatic)
                }
            }

5

আমি একাধিক ডেটা দেখানোর জন্য টেবিলভিউসেল ব্যবহার করেছি, একটি কক্ষে ডান থেকে বামে সোয়াইপ করার পরে এটি দুটি বোতাম প্রদর্শন করবে এবং প্রত্যাখ্যান করবে, দুটি পদ্ধতি আছে, প্রথমটি হল অ্যাপ্রোভফঙ্ক যা একটি যুক্তি নেয়, এবং অন্যটি হ'ল রিজেক্টফানক একটি যুক্তি লাগে। এখানে চিত্র বর্ণনা লিখুন

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let Approve = UITableViewRowAction(style: .normal, title: "Approve") { action, index in

        self.ApproveFunc(indexPath: indexPath)
    }
    Approve.backgroundColor = .green

    let Reject = UITableViewRowAction(style: .normal, title: "Reject") { action, index in

        self.rejectFunc(indexPath: indexPath)
    }
    Reject.backgroundColor = .red



    return [Reject, Approve]
}

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

func ApproveFunc(indexPath: IndexPath) {
    print(indexPath.row)
}
func rejectFunc(indexPath: IndexPath) {
    print(indexPath.row)
}

আইওএস ১৩-তে 'ইউআইটিএবলভিউরউঅ্যাকশন' অবনতিযুক্ত instead
জারিশ জোসে

4

এক্সকোড 6.1.1 হিসাবে, ড্যাশের উত্তরে কিছু ছোট পরিবর্তন রয়েছে।

override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
        return true
    }

    override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
        if (editingStyle == UITableViewCellEditingStyle.Delete) {
            // handle delete (by removing the data from your array and updating the tableview)
        }
    }

4

সুইফট ২.০ এ আমার জন্য কাজ করে

override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return true
}

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

}

override func tableView(tableView: UITableView,
    editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    let block = UITableViewRowAction(style: .Normal, title: "Block") { action, index in
        print("Block")
        self.removeObjectAtIndexPath(indexPath, animated: true)
    }
    let delete = UITableViewRowAction(style: .Default, title: "Delete") { action, index in
        print("Delete")
        self.removeObjectAtIndexPath(indexPath, animated: true)
    }
    return [delete, block]
}

আপনি কি দয়া করে আরও বিস্তারিত বলতে পারেন "Block"?
nyxee

4

সুইফট 4 টেবিলভিউ অ্যাডে, ইউআইটিএবলভিউসেল মুছতে সোয়াইপ করুন

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let delete = UITableViewRowAction(style: .destructive, title: "delete") { (action, indexPath) in
        // delete item at indexPath

    }
    return [delete]
}

3
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]?
{

    let delete = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "DELETE"){(UITableViewRowAction,NSIndexPath) -> Void in

        print("What u want while Pressed delete")
    }
    let edit = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "EDIT"){(UITableViewRowAction,NSIndexPath) -> Void in

        print("What u want while Pressed Edit")
    }

    edit.backgroundColor = UIColor.blackColor()
    return [delete,edit]
}

2

সুইফট 4

@available(iOS 11.0, *)    
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
            let action =  UIContextualAction(style: .normal, title: "", handler: { (action,view,completionHandler ) in
                //do stuff
                completionHandler(true)
                let data:NSDictionary = self.conversations[indexPath.row] as! NSDictionary
                print(data)
                let alert:UIAlertController = UIAlertController(title: "", message: "are you sure want to delete ?", preferredStyle: .alert)

                alert.addAction(UIAlertAction(title: "CANCEL", style: UIAlertActionStyle.cancel, handler: { (action) in
                }))
                self.present(alert, animated: true, completion: nil)
            })
            action.image = UIImage(named: "")
            action.backgroundColor = UIColor(red: 0/255, green: 148/255, blue: 204/255, alpha: 1.0)
            let confrigation = UISwipeActionsConfiguration(actions: [action])

            return confrigation
        }

2

কেবল পদ্ধতি যুক্ত করুন:

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
    let delete = UITableViewRowAction(style: UITableViewRowActionStyle.destructive, title: "Delete") { (action, indexPath) in
        self.arrayFruit.remove(at: indexPath.row)
        self.tblList.reloadData()
    }

    let edit = UITableViewRowAction(style: UITableViewRowActionStyle.normal, title: "Edit") { (action, indexpath) in

        let alert = UIAlertController(title: "FruitApp", message: "Enter Fuit Name", preferredStyle: UIAlertControllerStyle.alert)
        alert.addTextField(configurationHandler: { (textField) in
            textField.placeholder = "Enter new fruit name"
        })
        alert.addAction(UIAlertAction(title: "Update", style: UIAlertActionStyle.default, handler: { [weak alert](_) in
            let textField = alert?.textFields![0]
            self.arrayFruit[indexPath.row] = (textField?.text!)!
            self.tblList.reloadData()
        }))

        self.present(alert, animated: true, completion: nil)
    }
    edit.backgroundColor = UIColor.blue
    return [delete,edit]
}

এখানে চিত্র বর্ণনা লিখুন


1

সম্পূর্ণরূপে কাস্টমাইজযোগ্য বোতাম সমর্থিত সহ আমার ফলাফলটি সুইফ্টটি দেখুন

এটি কেবলমাত্র একটি পদ্ধতি প্রয়োগের জন্য অগ্রিম বোনাস এবং আপনি একটি নিখুঁত বোতাম পান !!!

 func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
        let action = UIContextualAction(
            style: .destructive,
            title: "",
            handler: { (action, view, completion) in

                let alert = UIAlertController(title: "", message: "Are you sure you want to delete this incident?", preferredStyle: .actionSheet)

                alert.addAction(UIAlertAction(title: "Delete", style: .destructive , handler:{ (UIAlertAction)in
                    let model = self.incedentArry[indexPath.row] as! HFIncedentModel
                    print(model.incent_report_id)
                    self.incedentArry.remove(model)
                    tableView.deleteRows(at: [indexPath], with: .fade)
                    delete_incedentreport_data(param: ["incent_report_id": model.incent_report_id])
                    completion(true)
                }))

                alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler:{ (UIAlertAction)in
                    tableView.reloadData()
                }))

                self.present(alert, animated: true, completion: {

                })


        })
        action.image = HFAsset.ic_trash.image
        action.backgroundColor = UIColor.red
        let configuration = UISwipeActionsConfiguration(actions: [action])
        configuration.performsFirstActionWithFullSwipe = true
        return configuration
}

1
আমি এটি পছন্দ করি তবে কীভাবে আমি এটি ব্যবহার করে একটি ঘর মুছতে সক্ষম হব?
এভলিন

1
টেবিলভিউ প্রতিনিধি পদ্ধতি হিসাবে আপনার শ্রেণিতে কেবল এই পদ্ধতিটি প্রয়োগ করুন এবং আপনার ডেটা উত্স (অ্যারে ই মডেল) থেকে সূচকটি সরিয়ে ফেলুন: - মডেল = স্ব.সংশ্লিষ্টআরি [সূচকপথ.রো] হিসাবে! এইচএফআইসেনডেন্ট মডেল সেল.সেন্ডেন্ট এরি.রেমোভ (মডেল)
পরেশ মাঙ্গুকিয়া

0

সুইফট 3 - ইউআইভিউউকন্ট্রোলার

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if (editingStyle == UITableViewCellEditingStyle.delete) {
        // handle delete (by removing the data from your array and updating the tableview)
        print("delete tableview cell")
    }
}

0

দ্রুত 3

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {

    return true
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

    if (editingStyle == UITableViewCellEditingStyle.delete) {

        arrayCityName.remove(at: indexPath.row)
        self.tableCityName.reloadData()
    }
}

0

আপনার ডেটা অ্যারেটি 'ডেটা' বলে ধরে নেওয়া মাত্র এগুলি যুক্ত করুন

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if (editingStyle == UITableViewCellEditingStyle.delete) {
        // handle delete (by removing the data from your array and updating the tableview)
        if let tv=table
        {



            data.remove(at: indexPath.row)
            tv.deleteRows(at: [indexPath], with: .fade)



        }
    }
}

0
func tableView(_ tableView: UITableView, editActionsForRowAt: IndexPath) -> [UITableViewRowAction]? {

  let share = UITableViewRowAction(style: .normal, title: "Share") { action, index in
    //handle like delete button
    print("share button tapped")
  }

  share.backgroundColor = .lightGray

  let delete = UITableViewRowAction(style: .normal, title: "Delete") { action, index in
    self.nameArray.remove(at: editActionsForRowAt.row)
    self.swipeTable.beginUpdates()
    self.swipeTable.deleteRows(at: [editActionsForRowAt], with: .right)
    self.swipeTable.endUpdates()

    print("delete button tapped")
  }

  delete.backgroundColor = .orange
  return [share,delete]
}

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
  return true
}

0
@available(iOS 11.0, *)
    func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

        let editAction = UIContextualAction.init(style: UIContextualAction.Style.normal, title: "Edit", handler: { (action, view, completion) in
            //TODO: Edit
            completion(true)
            self.popUpViewPresent(index:indexPath.row)
        })

        let deleteAction = UIContextualAction.init(style: UIContextualAction.Style.destructive, title: "Delete", handler: { (action, view, completion) in
            //TODO: Delete
            completion(true)
            self.deleteTagAction(senderTag:indexPath.row)
        })
        editAction.image = UIImage(named: "Edit-white")
        deleteAction.image = UIImage(named: "Delete-white")
        editAction.backgroundColor = UIColor.gray
        deleteAction.backgroundColor = UIColor.red

        let config = UISwipeActionsConfiguration(actions: [deleteAction, editAction])
        config.performsFirstActionWithFullSwipe = false
        return config
    }

0

সুইফট 5

যেহেতু ইউআইটিএবলভিউরউঅ্যাকশনটি আইওএস ১৩.০ এ অবমুক্ত করা হয়েছিল তাই আপনি ইউআইএসইপইপশনঅনলাইন কনফিগারেশন ব্যবহার করতে পারেন

   func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
        let deleteAction = UIContextualAction(style: .destructive, title: "Delete") {  (contextualAction, view, boolValue) in
            self.deleteData(at: indexPath)
        }

        let editAction = UIContextualAction(style: .normal, title: "Edit") {  (contextualAction, view, boolValue) in
            self.editData(at: indexPath)
        }
        editAction.backgroundColor = .purple
        let swipeActions = UISwipeActionsConfiguration(actions: [deleteAction,editAction])

        return swipeActions
    }

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        return true
    }

    func deleteData(at indexPath: IndexPath) {
        print(indexPath.row)
    }

    func editData(at indexPath: IndexPath) {
        print(indexPath.row)
    }

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.