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