Skip to content

Commit

Permalink
Merge pull request #55 from segiddins/segiddins/speaker-image-to-spea…
Browse files Browse the repository at this point in the history
…ker-details

 Make tapping the speaker image push a speaker detail view controller Verified
  • Loading branch information
NatashaTheRobot committed Mar 3, 2018
2 parents e078272 + 6efee69 commit 3af5ec0
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 7 deletions.
2 changes: 2 additions & 0 deletions trySwift.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -649,7 +649,9 @@
411F0B1F9D6446FAAE23A50E /* Frameworks */,
F413680C9BA29129B4319377 /* Pods */,
);
indentWidth = 4;
sourceTree = "<group>";
tabWidth = 4;
};
FAFA15B91C69D31C00FEA4EA /* Products */ = {
isa = PBXGroup;
Expand Down
10 changes: 9 additions & 1 deletion trySwift/OfficeHoursDetailViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ extension OfficeHoursDetailViewController {
return cell
case .speakerInfo:
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
cell.configure(withSpeaker: speaker, selectionEnabled: false, accessoryEnabled: false, delegate: self)
cell.configure(withSpeaker: speaker, selectionEnabled: false, accessoryEnabled: false, delegate: self, speakerImageDelegate: self)
return cell
case .bio:
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as TextTableViewCell
Expand Down Expand Up @@ -76,3 +76,11 @@ extension OfficeHoursDetailViewController {
}
}

extension OfficeHoursDetailViewController: SpeakerImageDelegate {
func didTapSpeakerImage(forSpeaker speaker: Speaker) {
let vc = SpeakerDetailViewController()
vc.speaker = speaker
self.navigationController?.pushViewController(vc, animated: true)
}
}

10 changes: 9 additions & 1 deletion trySwift/SessionDetailsViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ extension SessionDetailsViewController {
return cell
case .speakerInfo:
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
cell.configure(withSpeaker: presentation.speaker!, selectionEnabled: false, accessoryEnabled: false, delegate: self)
cell.configure(withSpeaker: presentation.speaker!, selectionEnabled: false, accessoryEnabled: false, delegate: self, speakerImageDelegate: self)
return cell
case .summary:
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as TextTableViewCell
Expand All @@ -76,3 +76,11 @@ extension SessionDetailsViewController {
tableView.separatorStyle = .none
}
}

extension SessionDetailsViewController: SpeakerImageDelegate {
func didTapSpeakerImage(forSpeaker speaker: Speaker) {
let vc = SpeakerDetailViewController()
vc.speaker = speaker
self.navigationController?.pushViewController(vc, animated: true)
}
}
2 changes: 1 addition & 1 deletion trySwift/SpeakerDetailViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ extension SpeakerDetailViewController {
switch SpeakerDetail(rawValue: indexPath.row)! {
case .header:
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
cell.configure(withSpeaker: speaker, selectionEnabled: false, accessoryEnabled: false, delegate: self)
cell.configure(withSpeaker: speaker, selectionEnabled: false, accessoryEnabled: false, delegate: self, speakerImageDelegate: nil)
return cell
case .bio:
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as TextTableViewCell
Expand Down
17 changes: 16 additions & 1 deletion trySwift/SpeakerTableViewCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ import UIKit
import Kingfisher
import TrySwiftData

protocol SpeakerImageDelegate: class {
func didTapSpeakerImage(forSpeaker speaker: Speaker)
}

class SpeakerTableViewCell: UITableViewCell {

@IBOutlet weak var speakerImageView: UIImageView!
Expand All @@ -18,10 +22,14 @@ class SpeakerTableViewCell: UITableViewCell {

fileprivate var speaker: Speaker?
fileprivate weak var delegate: TwitterFollowDelegate?
fileprivate weak var speakerImageDelegate: SpeakerImageDelegate?

override func awakeFromNib() {
super.awakeFromNib()
speakerTwitterButton.setTitleColor(.trySwiftAccentColor(), for: .normal)
speakerImageView.addGestureRecognizer(
UITapGestureRecognizer(target: self, action: #selector(didTapSpeakerImage))
)
}


Expand All @@ -33,7 +41,7 @@ class SpeakerTableViewCell: UITableViewCell {
self.delegate?.followUser(speaker.twitter)
}

func configure(withSpeaker speaker: Speaker, selectionEnabled: Bool = true, accessoryEnabled: Bool = true, delegate: TwitterFollowDelegate) {
func configure(withSpeaker speaker: Speaker, selectionEnabled: Bool = true, accessoryEnabled: Bool = true, delegate: TwitterFollowDelegate, speakerImageDelegate: SpeakerImageDelegate?) {
let scale = UIScreen.main.scale
let processor = RoundCornerImageProcessor(cornerRadius: 34, targetSize: CGSize(width: 67, height: 67))
speakerImageView.kf.setImage(with: speaker.imageURL, placeholder: nil, options: [.processor(processor), .scaleFactor(scale)])
Expand All @@ -52,5 +60,12 @@ class SpeakerTableViewCell: UITableViewCell {

self.speaker = speaker
self.delegate = delegate
self.speakerImageDelegate = speakerImageDelegate
}

@objc
func didTapSpeakerImage() {
guard let speaker = speaker else { return }
self.speakerImageDelegate?.didTapSpeakerImage(forSpeaker: speaker)
}
}
2 changes: 1 addition & 1 deletion trySwift/SpeakerTableViewCell.xib
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<rect key="frame" x="0.0" y="0.0" width="286" height="81.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="GJ0-wN-VIc">
<imageView contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="GJ0-wN-VIc">
<rect key="frame" x="16" y="11" width="67" height="67"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<constraints>
Expand Down
2 changes: 1 addition & 1 deletion trySwift/SpeakersViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ extension SpeakersViewController {
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell

cell.configure(withSpeaker: speakers[indexPath.row], delegate: self)
cell.configure(withSpeaker: speakers[indexPath.row], delegate: self, speakerImageDelegate: nil)

return cell
}
Expand Down
10 changes: 9 additions & 1 deletion trySwift/WorkshopDetailViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ extension WorkshopDetailViewController {
return cell
case .speakerInfo:
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
cell.configure(withSpeaker: presentation.speaker!, selectionEnabled: false, accessoryEnabled: false, delegate: self)
cell.configure(withSpeaker: presentation.speaker!, selectionEnabled: false, accessoryEnabled: false, delegate: self, speakerImageDelegate: self)
return cell
case .summary:
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as TextTableViewCell
Expand Down Expand Up @@ -107,3 +107,11 @@ extension WorkshopDetailViewController {
}
}

extension WorkshopDetailViewController: SpeakerImageDelegate {
func didTapSpeakerImage(forSpeaker speaker: Speaker) {
let vc = SpeakerDetailViewController()
vc.speaker = speaker
self.navigationController?.pushViewController(vc, animated: true)
}
}

0 comments on commit 3af5ec0

Please sign in to comment.