используйте кнопку для извлечения индекса в основных данных - PullRequest
0 голосов
/ 02 марта 2020

Мой быстрый код ниже хотел бы использовать кнопку для go для первой фотографии в индексе. Мой код работает, если пользователь вводит 0 в поле tetxt. Затем представление изображения выбирает первый элемент, сохраненный в индексе. Что я хочу сделать, так это то, что когда пользователь нажимает rghtBtn, он будет иметь эффект ввода 0. Затем, если его снова нажать, он выбирает второй элемент в индексе. Так что это постоянный рост индекса. Пользователь выбирает двоичные данные с именем pi c. У меня есть фото двоичных данных.

enter image description here

enter image description here

import UIKit
import CoreData

class ViewController: UIViewController,UITextFieldDelegate {

    lazy var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext


    var itemsName : [NSManagedObject] = []

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {

        guard let text = (textField.text as? NSString)?.replacingCharacters(in: range, with: string), let index = Int(text) else {
            return true
        }
        loadImage(at: index - 1 )

//        currentPageLabel.text = tt.text

        let ee = (textField.text as NSString?)?.replacingCharacters(in: range, with: string)



        return true
    }


    func loadImage(at index : Int) {
        let fetchRequest = NSFetchRequest<Users>(entityName: "Users")
        fetchRequest.predicate = NSPredicate(format: "idx == %d", Int32(index))
        do {
            if let user = try context.fetch(fetchRequest).first {
                pic.image = UIImage(data: user.pic!)
            } else {
                pic.image = UIImage(named: "np.png")

            }
        } catch {
            print("Could not fetch \(error) ")
        }


    }


    var pic = UIImageView()
    var tt = UITextField()
    var lzbel = UILabel()

    var submit = UIButton()


    var leftBtn = UIButton()
    var rightBtn = UIButton()



    override var prefersStatusBarHidden: Bool {
        return true
    }
    override func viewDidLoad() {
        super.viewDidLoad()
       let item = Users(context: context)
          let vex = UIImage(named: "lili.jpg")!.pngData()
          item.pic = vex
          item.idx = 0

          let item2 = Users(context: context)
          let vex2 = UIImage(named: "camila.jpg")!.pngData()
          item2.pic = vex2
          item2.idx = 1

          print("Storing Data..")
          do {
              try context.save()
          } catch {
              print("Storing data Failed", error)
        }

        lzbel.textAlignment = .center


        tt.placeholder = "Enter Page Number"
        tt.delegate = self
        view.backgroundColor = .white

        [pic,tt,rightBtn].forEach{
            view.addSubview($0)
            $0.translatesAutoresizingMaskIntoConstraints = false
            $0.backgroundColor = .green
        }

        pic.backgroundColor = .red




        rightBtn.setTitle(">", for: .normal)
        tt.textAlignment = .center


        NSLayoutConstraint.activate ([


            tt.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant :0),
            tt.topAnchor.constraint(equalTo: view.topAnchor, constant : 0),
            tt.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.3, constant: 0),
            tt.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 0),

             tt.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 7/7, constant: 0),







            pic.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant :0),
            pic.topAnchor.constraint(equalTo: tt.bottomAnchor, constant : 0),
            pic.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.33, constant: 0),
            pic.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 0),



            rightBtn.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant :0),
               rightBtn.topAnchor.constraint(equalTo: pic.bottomAnchor, constant : 0),
               rightBtn.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.33, constant: 0),
               rightBtn.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 0),







        ])

        tt.backgroundColor = .systemGray


        submit.backgroundColor = .purple
        submit.setTitle("Save", for: .normal)


        let appD = UIApplication.shared.delegate as! AppDelegate

        let context = appD.persistentContainer.viewContext

        let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Users")
        fetchRequest.sortDescriptors = [NSSortDescriptor(key: "idx", ascending: true)]


        do {
            itemsName = try context.fetch(fetchRequest)



        }catch {
            print("Ashley Tisdale")
        }



        lzbel.text = String(itemsName.count) + String(" total pages saved")



        lzbel.backgroundColor = .red

        rightBtn.addTarget(self, action: #selector(rightBtnPress), for: .touchDown)

    }


    @objc func rightBtnPress(){
        //Hiting this code should have the effect


    }









}

1 Ответ

0 голосов
/ 04 марта 2020

Вам нужна индексная переменная.

var counter = 0

Затем в rightBtnPress загрузите изображение с индексом counter и увеличьте значение переменной.

@objc func rightBtnPress() {
   loadImage(at: counter)
   counter += 1
}
...