我真的很接近搞清楚这一点。因此,在iOS邮件应用程序中,当您单击两个箭头键时,它会将您带到上一个/下一个邮件。它位于右上方
我已设法将indexPath值传递给第二个viewcontroller
并在控制台中打印。我也可以从中增加和减少。
if segue.identifier == "DetailVC" {
let detailVC = segue.destination as! DetailVC
let indexPath = self.collectionViewIBO.indexPathsForSelectedItems?.last!
detailVC.index = indexPath
}
修改 这是我从中提取数据的地方。它从我的模型中读取值。但是,我无法为其分配indexPath。我只能从之前的视图控制器
那样做var monster: Monsters!
我尝试使用此代码实现“之前”功能。我的视图样式位于displayDataForIndexPath()
函数中,函数从我的view will appear
@IBAction func monsPreviousIBO(_ sender: Any) {
self.index = IndexPath(row: self.index.row - 1, section: self.index.section)
displayDataForIndexPath()
}
但它所做的就是减少IndexPath。由于某种原因,数据实际上并没有使用我的函数重新加载。我在这里错过了一些重要的拼图,以实现相同的功能。
编辑我的displayDataForIndex
中的代码如下
func displayDataForIndexPath() {
if index.row == 0 {
self.monsPreviousIBO.removeFromSuperview()
}
var monsterName = (String(format: "%03d", monster.speciesId!))
self.navigationItem.title = monster.name!
let gif = UIImage(gifName: monsterName)
self.gifIBO.setGifImage(gif, manager: gifManager)
gifIBO.contentMode = .center
guard monster.legendary! != true else {
// Value requirements not met, do something
monsterStatusLegend()
return
}
guard monster.subLegend! != true else {
// Value requirements not met, do something
monsterStatusSub()
return
}
guard monster.isMega! != true else {
// Value requirements not met, do something
monsterStatusMega()
return
}
}
答案 0 :(得分:0)
根据monster
显示所有数据,但您永远不会根据您使用的索引路径更改monster
。
添加一些代码以填充monster
indexPath
monster = getMonster(index.row)
或在你的情况下
@IBAction func monsPreviousIBO(_ sender: Any) {
self.index = IndexPath(row: self.index.row - 1, section: self.index.section)
monster = mons[self.index.row]
displayDataForIndexPath()
}
或更好的displayDataForIndexPath()
添加此行:
func displayDataForIndexPath() {
if index.row == 0 {
self.monsPreviousIBO.removeFromSuperview()
}
monster = mons[self.index.row]
//....
注意一些建议:
我会更改按钮的行,然后在indexpath获得> 0时启用它:
self.monsPreviousIBO.isEnabled = (index.row != 0)
只需将行保存为monsterIndex = indexPath.row
,然后只处理索引而不处理indexPath。
如果你只在displayDataForIndexPath
中使用怪物,你不需要将当前怪物保存为怪物 - 那么你可以在那里得到当前的怪物并在这个函数中有一个局部变量:
var monster = mons[self.index.row]