Я делаю приложение CheckList с UITableView
. Мне было интересно, как добавить удар, чтобы удалить UITableViewCell
.
Это мой ViewController.swift:
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
}
}
И это MyTableViewCell.swift:
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 в качестве цели развертывания (не уверен, что это изменит).
ios
uitableview
swift
jdnoon
источник
источник
Ответы:
Добавьте эти две функции:
Swift 3.0:
Swift 4.2
источник
}
. Мне потребовалось всего 5 минут, чтобы понять это: pВы можете попробовать это:
источник
beingUpdates()
иendUpdates()
. Вы не видите их часто, и я только что видел, что они были частью разговора о передовой практике WWDC.Другой способ, который позволяет изменить текст «Удалить» и добавить больше кнопок при перемещении ячейки, заключается в использовании
editActionsForRowAtIndexPath
.canEditRowAtIndexPath
иcommitEditingStyle
все еще требуются, но вы можете оставитьcommitEditingStyle
пустым, так как удаление выполняетсяeditActionsForRowAtIndexPath
.источник
UITableViewController
и вы переопределяете этот метод, тогда да, подпись должна возвращаться[UITableViewRowAction]?
. Тем не менее, когда вы не наследуетеUITableViewController
, именно тогда метод должен вернуться[AnyObject]?
. Подумал, я бы выяснил, когда использовать, поэтому любой, кто читает это, не просто догадывается.источник
Это новая функция в iOS11 и Swift 4.
Ссылка ссылка:
Трейлинг Проведите:
источник
используй это :
надеюсь, это поможет вам
источник
Swift 4 - @available (iOS 11.0, *)
источник
Свифт 3:
источник
Swift 3 с пользовательским названием поддерживается
источник
Я использовал tableViewCell, чтобы показать несколько данных, после того, как swipe () справа налево на ячейке, он отобразит две кнопки Approve и reject, есть два метода, первый - ApproveFunc, который принимает один аргумент, и другой - RejectFunc, который также принимает один аргумент
источник
Начиная с Xcode 6.1.1, в ответе Dash есть небольшие изменения.
источник
У меня работает в Swift 2.0
источник
"Block"
делает?В Swift 4 добавление табличного представления проведите пальцем, чтобы удалить UITableViewCell
источник
источник
Swift 4
источник
Просто добавьте метод:
источник
здесь Смотрите мой результат Swift с поддержкой полностью настраиваемой кнопки
источник
SWIFT 3 - UIViewController
источник
Свифт 3
источник
просто добавьте их, предполагая, что ваш массив данных «данные»
источник
источник
источник
Swift 5
Поскольку UITableViewRowAction устарела в iOS 13.0, вы можете использовать UISwipeActionsConfiguration
источник