【发布时间】:2017-09-06 15:25:30
【问题描述】:
我有一个项目,人们可以在创建集合视图项时分配一个词,并且可以使用他们分配给集合视图项的该词在另一个视图中搜索它,例如:某人创建了项目并将其命名为“牛奶” ' 然后使用工作杂货,以便他们以后可以搜索。
我正在使用 CoreData,并在使用属性创建集合视图项时保存该词,这就是我的代码如何查找在创建集合视图单元格的位置填充的文本字段:
@IBAction func doneTran(_ sender: UIButton) {
if textFieldT.text != "" {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let task = Task(context: context)
task.name = textFieldT.text!
task.desc = descBox.text!
task.hashtag = hashtagField.text!
task.pid = pidStore
(UIApplication.shared.delegate as! AppDelegate).saveContext()
// Saves info to CoreData
}
主题标签是存储要搜索的术语的标签。然后我有一个新的视图控制器,可以使用主题标签字符串在其中搜索项目。它使用一个 textField 和一个 UIButton 来重新加载视图并根据它们的标签属性是否与 textField 文本匹配来显示项目。这就是我实现它的方式:
@IBOutlet weak var resultsColl: UICollectionView!
@IBOutlet weak var textFieldFHash: UITextField!
var taskTwo : [Task] = []
var activeCell : HashCollectionViewCell!
var testHashAt = String()
override func viewDidLoad() {
super.viewDidLoad()
self.resultsColl.delegate = self
self.resultsColl.dataSource = self
testHashAt = textFieldFHash.text!
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
getData()
resultsColl.reloadData()
testHashAt = textFieldFHash.text!
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return taskTwo.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let taskTHash = taskTwo[indexPath.row]
let cellHash = collectionView.dequeueReusableCell(withReuseIdentifier: "nCell", for: indexPath) as! HashCollectionViewCell
if testHashAt == taskTHash.hashtag {
cellHash.labelFHash?.text = taskTHash.name
}
else {
print("blank cell?")
}
if cellHash.labelFHash.text == "" {
print("cell is nil")
}
cellHash.layer.cornerRadius = 25
return cellHash
}
@IBAction func searchHashBtn(_ sender: UIButton) {
getData()
resultsColl.reloadData()
}
func getData() {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do {
let fetchRequest: NSFetchRequest<Task> = Task.fetchRequest()
fetchRequest.predicate = NSPredicate.init(format: "hashtag = %@", testHashAt);
taskTwo = try context.fetch(fetchRequest)
}
catch {
print("Get Data failed")
}
// Fetches data.
}
这就是视图控制器中用于搜索的所有代码,但是当我搜索该术语时,什么也没有出现。我不确定这是否是搜索按钮实际上没有重新加载视图以显示单元格或者搜索功能通常不起作用的问题。有谁知道如何根据他们的标签属性来显示正确的项目?
【问题讨论】:
标签: ios swift core-data uicollectionview