У меня проблемы с 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
}
}