bookmark editing

This commit is contained in:
Chris Li 2017-01-17 15:07:11 -05:00
parent 0601ae6e36
commit b652259783
4 changed files with 47 additions and 21 deletions

View File

@ -11,20 +11,9 @@ import CoreData
class BookmarkCollectionController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, NSFetchedResultsControllerDelegate { class BookmarkCollectionController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, NSFetchedResultsControllerDelegate {
@IBOutlet weak var collectionView: UICollectionView!
private(set) var itemWidth: CGFloat = 0.0 private(set) var itemWidth: CGFloat = 0.0
private(set) var shouldReloadCollectionView = false private(set) var shouldReloadCollectionView = false
@IBOutlet weak var collectionView: UICollectionView!
@IBAction func removaAll(_ sender: UIBarButtonItem) {
let context = AppDelegate.persistentContainer.viewContext
context.perform {
let fetchRequest = Article.fetchRequest() as! NSFetchRequest<Article>
let articles = try? context.fetch(fetchRequest)
articles?.forEach({ (article) in
context.delete(article)
})
try? context.save()
}
}
var book: Book? { var book: Book? {
didSet { didSet {
@ -39,8 +28,13 @@ class BookmarkCollectionController: UIViewController, UICollectionViewDataSource
return formatter return formatter
}() }()
@IBAction func dismiss(_ sender: UIBarButtonItem) { override func setEditing(_ editing: Bool, animated: Bool) {
dismiss(animated: true, completion: nil) super.setEditing(editing, animated: animated)
if editing {
navigationItem.rightBarButtonItems? = [doneButton, deleteButton]
} else {
navigationItem.rightBarButtonItems = [editButton]
}
} }
func configureItemWidth(collectionViewWidth: CGFloat) { func configureItemWidth(collectionViewWidth: CGFloat) {
@ -48,10 +42,42 @@ class BookmarkCollectionController: UIViewController, UICollectionViewDataSource
self.itemWidth = floor((collectionViewWidth - (itemsPerRow + 1) * 10) / itemsPerRow) self.itemWidth = floor((collectionViewWidth - (itemsPerRow + 1) * 10) / itemsPerRow)
} }
// MARK: - UI Control
let editButton = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(editButtonTapped(sender:)))
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneButtonTapped(sender:)))
let deleteButton = UIBarButtonItem(barButtonSystemItem: .trash, target: self, action: #selector(deleteButtonTapped(sender:)))
@IBAction func dismiss(_ sender: UIBarButtonItem) {
dismiss(animated: true, completion: nil)
}
func editButtonTapped(sender: UIBarButtonItem) {
setEditing(true, animated: true)
}
func doneButtonTapped(sender: UIBarButtonItem) {
setEditing(false, animated: true)
}
func deleteButtonTapped(sender: UIBarButtonItem) {
let context = AppDelegate.persistentContainer.viewContext
context.perform {
let fetchRequest = Article.fetchRequest() as! NSFetchRequest<Article>
let articles = try? context.fetch(fetchRequest)
articles?.forEach({ (article) in
context.delete(article)
})
try? context.save()
}
}
// MARK: - override // MARK: - override
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
title = "Bookmarks"
navigationItem.rightBarButtonItems = [editButton]
collectionView.alwaysBounceVertical = true collectionView.alwaysBounceVertical = true
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout { if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {

View File

@ -44,6 +44,7 @@ class MainController: UIViewController {
super.traitCollectionDidChange(previousTraitCollection) super.traitCollectionDidChange(previousTraitCollection)
guard traitCollection.horizontalSizeClass != previousTraitCollection?.horizontalSizeClass || guard traitCollection.horizontalSizeClass != previousTraitCollection?.horizontalSizeClass ||
traitCollection.verticalSizeClass != previousTraitCollection?.verticalSizeClass else {return} traitCollection.verticalSizeClass != previousTraitCollection?.verticalSizeClass else {return}
// buttons // buttons
switch traitCollection.horizontalSizeClass { switch traitCollection.horizontalSizeClass {
case .compact: case .compact:

View File

@ -49,7 +49,7 @@
</constraints> </constraints>
</imageView> </imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="justified" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsLetterSpacingToFitWidth="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LK0-aY-C9L"> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="justified" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsLetterSpacingToFitWidth="YES" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LK0-aY-C9L">
<rect key="frame" x="8" y="31" width="191" height="17"/> <rect key="frame" x="8" y="30" width="191" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/> <fontDescription key="fontDescription" type="system" pointSize="14"/>
<nil key="textColor"/> <nil key="textColor"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
@ -95,7 +95,9 @@
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints> <constraints>
<constraint firstAttribute="trailingMargin" secondItem="9EM-Do-qfE" secondAttribute="trailing" id="0H3-5k-m0f"/> <constraint firstAttribute="trailingMargin" secondItem="9EM-Do-qfE" secondAttribute="trailing" id="0H3-5k-m0f"/>
<constraint firstItem="LK0-aY-C9L" firstAttribute="top" secondItem="YA4-yb-hoI" secondAttribute="bottom" constant="1" id="95I-Gx-tc1"/> <constraint firstItem="LK0-aY-C9L" firstAttribute="top" secondItem="YA4-yb-hoI" secondAttribute="bottom" constant="1" id="95I-Gx-tc1">
<variation key="widthClass=compact" constant="0.0"/>
</constraint>
<constraint firstItem="CQi-0M-O0e" firstAttribute="top" secondItem="9EM-Do-qfE" secondAttribute="bottom" constant="6" id="9jg-Ou-dzI"/> <constraint firstItem="CQi-0M-O0e" firstAttribute="top" secondItem="9EM-Do-qfE" secondAttribute="bottom" constant="6" id="9jg-Ou-dzI"/>
<constraint firstItem="Alw-Di-WEl" firstAttribute="leading" secondItem="CQi-0M-O0e" secondAttribute="trailing" constant="8" id="Eoq-GI-7la"/> <constraint firstItem="Alw-Di-WEl" firstAttribute="leading" secondItem="CQi-0M-O0e" secondAttribute="trailing" constant="8" id="Eoq-GI-7la"/>
<constraint firstItem="Alw-Di-WEl" firstAttribute="top" secondItem="9EM-Do-qfE" secondAttribute="bottom" constant="6" id="GkX-zd-iqc"/> <constraint firstItem="Alw-Di-WEl" firstAttribute="top" secondItem="9EM-Do-qfE" secondAttribute="bottom" constant="6" id="GkX-zd-iqc"/>
@ -143,11 +145,6 @@
<action selector="dismiss:" destination="mMM-mS-I3F" id="PkU-Qf-DQ9"/> <action selector="dismiss:" destination="mMM-mS-I3F" id="PkU-Qf-DQ9"/>
</connections> </connections>
</barButtonItem> </barButtonItem>
<barButtonItem key="rightBarButtonItem" systemItem="trash" id="ELs-vA-7OD">
<connections>
<action selector="removaAll:" destination="mMM-mS-I3F" id="LC1-Lp-IK5"/>
</connections>
</barButtonItem>
</navigationItem> </navigationItem>
<connections> <connections>
<outlet property="collectionView" destination="Nlm-HS-W5q" id="nxj-xO-4Py"/> <outlet property="collectionView" destination="Nlm-HS-W5q" id="nxj-xO-4Py"/>

View File

@ -136,6 +136,8 @@ class BookmarkCollectionCell: UICollectionViewCell {
@IBOutlet weak var dividerView: UIView! @IBOutlet weak var dividerView: UIView!
@IBOutlet weak var bookTitleLabel: UILabel! @IBOutlet weak var bookTitleLabel: UILabel!
@IBOutlet weak var bookmarkDetailLabel: UILabel! @IBOutlet weak var bookmarkDetailLabel: UILabel!
} }