Skip to content

Commit 3af5ec0

Browse files
Merge pull request #55 from segiddins/segiddins/speaker-image-to-speaker-details
Make tapping the speaker image push a speaker detail view controller Verified
2 parents e078272 + 6efee69 commit 3af5ec0

8 files changed

+48
-7
lines changed

trySwift.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,9 @@
649649
411F0B1F9D6446FAAE23A50E /* Frameworks */,
650650
F413680C9BA29129B4319377 /* Pods */,
651651
);
652+
indentWidth = 4;
652653
sourceTree = "<group>";
654+
tabWidth = 4;
653655
};
654656
FAFA15B91C69D31C00FEA4EA /* Products */ = {
655657
isa = PBXGroup;

trySwift/OfficeHoursDetailViewController.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ extension OfficeHoursDetailViewController {
4747
return cell
4848
case .speakerInfo:
4949
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
50-
cell.configure(withSpeaker: speaker, selectionEnabled: false, accessoryEnabled: false, delegate: self)
50+
cell.configure(withSpeaker: speaker, selectionEnabled: false, accessoryEnabled: false, delegate: self, speakerImageDelegate: self)
5151
return cell
5252
case .bio:
5353
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as TextTableViewCell
@@ -76,3 +76,11 @@ extension OfficeHoursDetailViewController {
7676
}
7777
}
7878

79+
extension OfficeHoursDetailViewController: SpeakerImageDelegate {
80+
func didTapSpeakerImage(forSpeaker speaker: Speaker) {
81+
let vc = SpeakerDetailViewController()
82+
vc.speaker = speaker
83+
self.navigationController?.pushViewController(vc, animated: true)
84+
}
85+
}
86+

trySwift/SessionDetailsViewController.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ extension SessionDetailsViewController {
4949
return cell
5050
case .speakerInfo:
5151
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
52-
cell.configure(withSpeaker: presentation.speaker!, selectionEnabled: false, accessoryEnabled: false, delegate: self)
52+
cell.configure(withSpeaker: presentation.speaker!, selectionEnabled: false, accessoryEnabled: false, delegate: self, speakerImageDelegate: self)
5353
return cell
5454
case .summary:
5555
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as TextTableViewCell
@@ -76,3 +76,11 @@ extension SessionDetailsViewController {
7676
tableView.separatorStyle = .none
7777
}
7878
}
79+
80+
extension SessionDetailsViewController: SpeakerImageDelegate {
81+
func didTapSpeakerImage(forSpeaker speaker: Speaker) {
82+
let vc = SpeakerDetailViewController()
83+
vc.speaker = speaker
84+
self.navigationController?.pushViewController(vc, animated: true)
85+
}
86+
}

trySwift/SpeakerDetailViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ extension SpeakerDetailViewController {
4343
switch SpeakerDetail(rawValue: indexPath.row)! {
4444
case .header:
4545
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
46-
cell.configure(withSpeaker: speaker, selectionEnabled: false, accessoryEnabled: false, delegate: self)
46+
cell.configure(withSpeaker: speaker, selectionEnabled: false, accessoryEnabled: false, delegate: self, speakerImageDelegate: nil)
4747
return cell
4848
case .bio:
4949
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as TextTableViewCell

trySwift/SpeakerTableViewCell.swift

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import UIKit
1010
import Kingfisher
1111
import TrySwiftData
1212

13+
protocol SpeakerImageDelegate: class {
14+
func didTapSpeakerImage(forSpeaker speaker: Speaker)
15+
}
16+
1317
class SpeakerTableViewCell: UITableViewCell {
1418

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

1923
fileprivate var speaker: Speaker?
2024
fileprivate weak var delegate: TwitterFollowDelegate?
25+
fileprivate weak var speakerImageDelegate: SpeakerImageDelegate?
2126

2227
override func awakeFromNib() {
2328
super.awakeFromNib()
2429
speakerTwitterButton.setTitleColor(.trySwiftAccentColor(), for: .normal)
30+
speakerImageView.addGestureRecognizer(
31+
UITapGestureRecognizer(target: self, action: #selector(didTapSpeakerImage))
32+
)
2533
}
2634

2735

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

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

5361
self.speaker = speaker
5462
self.delegate = delegate
63+
self.speakerImageDelegate = speakerImageDelegate
64+
}
65+
66+
@objc
67+
func didTapSpeakerImage() {
68+
guard let speaker = speaker else { return }
69+
self.speakerImageDelegate?.didTapSpeakerImage(forSpeaker: speaker)
5570
}
5671
}

trySwift/SpeakerTableViewCell.xib

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<rect key="frame" x="0.0" y="0.0" width="286" height="81.5"/>
1919
<autoresizingMask key="autoresizingMask"/>
2020
<subviews>
21-
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="GJ0-wN-VIc">
21+
<imageView contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="GJ0-wN-VIc">
2222
<rect key="frame" x="16" y="11" width="67" height="67"/>
2323
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
2424
<constraints>

trySwift/SpeakersViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ extension SpeakersViewController {
7272
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
7373
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
7474

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

7777
return cell
7878
}

trySwift/WorkshopDetailViewController.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ extension WorkshopDetailViewController {
5656
return cell
5757
case .speakerInfo:
5858
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as SpeakerTableViewCell
59-
cell.configure(withSpeaker: presentation.speaker!, selectionEnabled: false, accessoryEnabled: false, delegate: self)
59+
cell.configure(withSpeaker: presentation.speaker!, selectionEnabled: false, accessoryEnabled: false, delegate: self, speakerImageDelegate: self)
6060
return cell
6161
case .summary:
6262
let cell = tableView.dequeueReusableCell(forIndexPath: indexPath) as TextTableViewCell
@@ -107,3 +107,11 @@ extension WorkshopDetailViewController {
107107
}
108108
}
109109

110+
extension WorkshopDetailViewController: SpeakerImageDelegate {
111+
func didTapSpeakerImage(forSpeaker speaker: Speaker) {
112+
let vc = SpeakerDetailViewController()
113+
vc.speaker = speaker
114+
self.navigationController?.pushViewController(vc, animated: true)
115+
}
116+
}
117+

0 commit comments

Comments
 (0)