2016-05-12 6 views
4

Ich habe eine Schaltfläche zum Löschen, die beim Wischen sichtbar wird, aber ich mag wirklich, was passiert in der Mail-App, wo, wenn Sie weiter wischen, wird die Löschen-Taste verwendet werden der Gegenstand. Ich habe eine Menge von Tutorials zur Umsetzung Artikel gesehenWie lösche ich die Funktionalität ähnlich wie die native E-Mail-App von iOS

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

verwenden, aber ich kann nicht herausfinden, was die Taste, um die volle Breite der Tabellenzelle vergrößert verwenden zu machen. Irgendwelche Gedanken?

A look at what I want to implement

edit: ich nur deaktivieren klauen absetzen würde, sobald die Löschtaste ist gelüftet, Ich mag es nicht, wie Sie die Tabellenzelle wischen können den zugrunde liegenden Hintergrund zu sehen.

Antwort

1

Dies ist möglich mit UIScrollView Paging.

erstellen UIScrollView und fügen Sie es als ein Subview zu Ihrem UITableViewCell (auch Größe Einschränkung hinzufügen, um die Scroll gleichen Größe zu machen, wie es Eltern Grenzen ist)

nun diesen Code für die Scrollview gesetzt:

//set scroll view 
scrollview.delegate = self; 
scrollview.pagingEnabled = true; 
scrollview.showsHorizontalScrollIndicator = false; 
scrollview.showsVerticalScrollIndicator = false; 
scrollview.contentSize.width = scrollview.bounds.width * 2.0; 

//create delete swipe view 
let deleteButton = UIView(frame: CGRectMake(scrollview.bounds.width,0,scrollview.bounds.width * 2.0,scrollview.bounds.height)) 
deleteButton.backgroundColor = UIColor.redColor() 

let deleteLabel = UILabel(frame: CGRectMake(0,0,scrollview.bounds.width * 0.3,scrollview.bounds.height)) 
deleteLabel.textColor = UIColor.whiteColor() 
deleteLabel.text = "Delete" 
deleteLabel.contentMode = .Center 
deleteLabel.textAlignment = .Center 
deleteButton.addSubview(deleteLabel) 
scrollview.addSubview(deleteButton) 

jetzt die Delegatfunktion:

func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 
    if scrollView.contentOffset.x == 0{ 
     return; 
    } 

    let confirmDelete = UIAlertController(title: "Are you sure you want to delete?", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet) 
    confirmDelete.addAction(UIAlertAction(title: "Yes", style: UIAlertActionStyle.Destructive, handler: { (_) -> Void in 
     //Delete confirmed 

    })) 

    confirmDelete.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: { (_) -> Void in 
     scrollView.contentOffset.x = 0; 
    })) 

    rootViewController.presentViewController(confirmDelete, animated: true, completion: nil); 
} 

dies wird die nächste Wirkung erzeugen:

enter image description here

+0

Wie fügt man den anderen Inhalt der Zelle hinzu? –

Verwandte Themen