diff --git a/LearnEnglish/LearnEnglish/Views/QuizViewController.swift b/LearnEnglish/LearnEnglish/Views/QuizViewController.swift index f48cb48..c13b878 100644 --- a/LearnEnglish/LearnEnglish/Views/QuizViewController.swift +++ b/LearnEnglish/LearnEnglish/Views/QuizViewController.swift @@ -28,6 +28,12 @@ final class QuizViewController: UIViewController { private let promptStack = UIStackView() private let inputStack = UIStackView() private let resultStack = UIStackView() + private let navSpeakerItem = UIBarButtonItem( + image: UIImage(systemName: "speaker.wave.2.fill"), + style: .plain, + target: nil, + action: nil + ) private var current: QuizQuestion? { questions.indices.contains(currentIndex) ? questions[currentIndex] : nil @@ -110,12 +116,9 @@ final class QuizViewController: UIViewController { nextButton.configuration = nextConfig nextButton.addAction(UIAction { [weak self] _ in self?.primaryButtonTapped() }, for: .touchUpInside) - navigationItem.rightBarButtonItem = UIBarButtonItem( - image: UIImage(systemName: "speaker.wave.2.fill"), - style: .plain, - target: self, - action: #selector(speakCurrentWord) - ) + navSpeakerItem.target = self + navSpeakerItem.action = #selector(speakCurrentWord) + navigationItem.rightBarButtonItem = navSpeakerItem let headerStack = UIStackView(arrangedSubviews: [progressView, countLabel]) headerStack.axis = .vertical @@ -163,6 +166,8 @@ final class QuizViewController: UIViewController { resultLabel.isHidden = true resultPhoneticLabel.isHidden = true + navigationItem.rightBarButtonItem = config.mode == .zhToEn ? nil : navSpeakerItem + let isSpelling = config.mode == .spelling let isDictation = config.mode == .dictation let isChoice = !isSpelling && !isDictation @@ -290,6 +295,7 @@ final class QuizViewController: UIViewController { icon.transform = .identity } } + navigationItem.rightBarButtonItem = navSpeakerItem showResult(correct, for: question) } diff --git a/LearnEnglish/LearnEnglish/Views/WordDetailViewController.swift b/LearnEnglish/LearnEnglish/Views/WordDetailViewController.swift index 629dafb..1797b75 100644 --- a/LearnEnglish/LearnEnglish/Views/WordDetailViewController.swift +++ b/LearnEnglish/LearnEnglish/Views/WordDetailViewController.swift @@ -2,16 +2,17 @@ import UIKit final class WordDetailViewController: UIViewController { private let word: Word + private let categoryName: String private let speech = SpeechService.shared private let speakButton = UIButton(type: .system) private let exampleSpeakButton = UIButton(type: .system) private let contentStack = UIStackView() private var speechObserver: NSObjectProtocol? - private var didAnimateEntry = false - init(word: Word) { + init(word: Word, categoryName: String = "") { self.word = word + self.categoryName = categoryName super.init(nibName: nil, bundle: nil) } @@ -27,7 +28,7 @@ final class WordDetailViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .systemBackground - title = word.word + title = categoryName navigationItem.largeTitleDisplayMode = .never buildLayout() updateSpeakState() @@ -38,14 +39,6 @@ final class WordDetailViewController: UIViewController { } } - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - if !didAnimateEntry { - didAnimateEntry = true - contentStack.animateEntry(distance: 16, duration: 0.35) - } - } - private func updateSpeakState() { let wordSpeaking = speech.isSpeaking(word.word) speakButton.configuration?.image = UIImage( diff --git a/LearnEnglish/LearnEnglish/Views/WordListViewController.swift b/LearnEnglish/LearnEnglish/Views/WordListViewController.swift index c4222dd..597ff57 100644 --- a/LearnEnglish/LearnEnglish/Views/WordListViewController.swift +++ b/LearnEnglish/LearnEnglish/Views/WordListViewController.swift @@ -148,6 +148,6 @@ extension WordListViewController: UITableViewDataSource, UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { Haptics.selection() navigationController?.pushViewController( - WordDetailViewController(word: category.words[indexPath.row]), animated: true) + WordDetailViewController(word: category.words[indexPath.row], categoryName: category.name), animated: true) } }