В строке заголовка подробностей покажите «Изображение X из Y» - PullRequest
1 голос
/ 22 апреля 2019

У меня проблемы с 1 из 3 задач.

1-я задача Используйте Interface Builder, чтобы выбрать текстовую метку внутри ячейки табличного представления и настроить размер шрифта на что-то большее - поэкспериментируйте и посмотрите, что выглядитхорошо.(Готово)

2-й вызов В главном представлении таблицы покажите имена изображений в отсортированном порядке (Готово)

3-й вызов - «Вместо того, чтобы показывать имена изображений в строке заголовка сведений, показать«Изображение X из Y», где Y - общее количество изображений, а X - позиция выбранного изображения в массиве. Убедитесь, что вы считаете от 1, а не от 0. "

Я создаю строку простого табличного представленияс ячейками, с изображениями, и когда вы нажмете на него, он покажет вам картинку.

У меня есть идея, но я борюсь.Итак, я знаю, что заголовок будет использовать интерполяцию строк, и я уже создал

var selectedPictureNumber = 0
var totalPictures = 0

Теперь я попытался создать

var selectedPictureNumber =  pictures[indexPath.row]
                     or

var selectedPictureNumber = indexPath.row

Но я получаю сообщения об ошибках

Вотчто я получил на mainViewController.swift

class ViewController: UITableViewController {

        var pictures = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()


        // Adds a title to the navegation bar.

        title = "Storm Viewer"


        //This makes the title larger as well.
        navigationController?.navigationBar.prefersLargeTitles = true

        // THis code manages the images from the files saved locally to xcode

        let fm = FileManager.default
        let path = Bundle.main.resourcePath!
        let items = try! fm.contentsOfDirectory(atPath: path)


        for item in items {
            if item.hasPrefix("nssl"){
                pictures.append(item)

            }
        }
        // This pictures.sort makes the arrays sort in order.

        pictures.sort()
        print(pictures)
    }

    // This code creates  the table view rows , adds the table cells and adds the pictures to each table view cell.


    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return pictures.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "picture", for: indexPath)
        cell.textLabel?.text = pictures[indexPath.row]
        return cell
    }
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if let vc = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController{
            vc.selectedImage = pictures[indexPath.row]
            navigationController?.pushViewController(vc, animated: true)
        }
    }
}


Вот что у меня есть на моем detailViewController.swift

class DetailViewController: UIViewController {

    // Outlets

    @IBOutlet var imageView: UIImageView!

    // Vars
    var selectedImage : String?
    var selectedPictureNumber = 0
    var totalPictures = 0

    override func viewDidLoad(){

        title = selectedImage

        super.viewDidLoad()

        // THis code makes the title of the navegation bar on the detailViewcontroller the name of the img.

        title = selectedImage


        // This line will make it so that the title on the navegation bar will not be large.

        navigationItem.largeTitleDisplayMode = .never

        //This code lets the images that are on the detailViewController

        if let imageToLoad = selectedImage{
            imageView.image = UIImage(named: imageToLoad)
        }

    }


    // This code will make the Navigation bar appear & Dissapear with a touch on the screen.

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.hidesBarsOnTap = true
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        navigationController?.hidesBarsOnTap = false
    }
    }

1 Ответ

2 голосов
/ 05 июня 2019

У меня есть ваш вопрос, просто обновите код в mainViewController.swift следующим образом:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if let vc = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController{
        vc.selectedImage = pictures[indexPath.row]
        vc.selectedPictureNumber = indexPath.row + 1
        vc.totalPictures = pictures.count
        navigationController?.pushViewController(vc, animated: true)
    }
}

Затем в файл detailViewController.swift, метод Inside viewDidLoad добавьте следующий код.

self.title = "Picture \(selectedPictureNumber) of (totalPictures)"

Я надеюсь, что это решение, которое вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...