Ios 正在尝试为“在收藏夹列表中添加项目”创建收藏夹按钮
我正在尝试在CollectionViewCell上创建收藏按钮,用于保存收藏列表中的项目。当我点击favorite图标按钮时,它成功地将选定的单元格项添加到favorite list类的数组中,并显示在favorite list中。当我点击“收藏夹”按钮时,它会根据是否已保存的值更改其图像。 当我试图在NSUserDefaults中保存收藏夹列表数组时,它会在检索时保存并显示值。但当我从模拟器关闭我的应用程序并再次运行时,它不会显示我保存在NSUserDefaults中的favorite列表数组中的值,并且还希望根据是否已添加的项设置按钮图像状态 当我点击收藏夹时。并在关闭我的应用程序后再次运行。 谁能告诉我怎样才能解决这个问题。或者谁能帮我把它修好 谢谢Ios 正在尝试为“在收藏夹列表中添加项目”创建收藏夹按钮,ios,swift,swift2,nsuserdefaults,Ios,Swift,Swift2,Nsuserdefaults,我正在尝试在CollectionViewCell上创建收藏按钮,用于保存收藏列表中的项目。当我点击favorite图标按钮时,它成功地将选定的单元格项添加到favorite list类的数组中,并显示在favorite list中。当我点击“收藏夹”按钮时,它会根据是否已保存的值更改其图像。 当我试图在NSUserDefaults中保存收藏夹列表数组时,它会在检索时保存并显示值。但当我从模拟器关闭我的应用程序并再次运行时,它不会显示我保存在NSUserDefaults中的favorite列表数组
我已经检查了你的样本项目,我做了一个小的改变,现在它的工作良好
override func viewWillAppear(animated: Bool) {
collectionView.reloadData()
//You have check for availablity of favorute item before adding to userdefault
if u.count > 0 {
NSUserDefaults.standardUserDefaults().setObject(u, forKey: "u")
NSUserDefaults.standardUserDefaults().setObject(i, forKey: "i")
NSUserDefaults.standardUserDefaults().synchronize()
}
uV = NSUserDefaults.standardUserDefaults().arrayForKey("u")!
iV = NSUserDefaults.standardUserDefaults().arrayForKey("i")!
print("uV values.. \(uV)")
print("iV values.. \(iV)")
}
在将对象添加到Userdefault之前,请检查其可用性。现在它工作正常。请尝试一下,并让我知道响应
编辑:
我已经编辑了你的代码,现在它工作得很好,我听到的列表中列出了我所做的所有更改
var MutableArray:NSMutableArray!
let defaults = NSUserDefaults.standardUserDefaults()
override func viewDidLoad() {
super.viewDidLoad()
MutableArray = NSMutableArray()
if let HaveUrl = defaults.objectForKey("u"){
u = HaveUrl.mutableCopy() as! [NSString]
}
if let HaveImage = defaults.objectForKey("i"){
i = HaveImage.mutableCopy() as! [NSString]
}
if let CheckAvailability = defaults.objectForKey("Fav_Unfav"){
MutableArray = CheckAvailability.mutableCopy() as! NSMutableArray
}else{
for var Check in image {
print(Check)
MutableArray.addObject("wHeart")
}
}
}
cellForItemAtIndexPath:
//Add this New Line
cell.heartBt.setImage(UIImage(named: MutableArray[indexPath.row] as! String), forState: UIControlState.Normal)
class LiveCollectionViewCell: UICollectionViewCell{
var showPlayButton = true
var number = Int()
var secondNumber = Int()
@IBOutlet weak var playBt: UIButton!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var heartBt: UIButton!
@IBAction func heartBt(sender: UIButton) {
var btn : NSInteger
btn = sender.tag as NSInteger
let uValues = url[btn]
let iValues = image[btn]
if MutableArray[btn] as! String == "rheart" {
showPlayButton = false
}
if showPlayButton == true{
//Add this Line
MutableArray.replaceObjectAtIndex(btn, withObject: "rheart")
u.append(url[btn])
i.append(image[btn])
self.heartBt.setImage(UIImage(named: "rheart"), forState: UIControlState.Normal)
showPlayButton = false
print("rHeart xxxxxxxxxxxxxxx")
}else{
//Add this Line
MutableArray.replaceObjectAtIndex(btn, withObject: "wHeart")
for check in u {
number++
print(number)
if uValues == check{
print(u)
u.removeAtIndex(number-1)
number = 0
print("RemoVe at indext path")
print(u)
break
}
}
for check2 in i{
secondNumber++
print(secondNumber)
if iValues == check2{
print(i)
i.removeAtIndex(secondNumber-1)
secondNumber = 0
print("RemoVe at indext path")
print(i)
self.heartBt.setImage(UIImage(named: "wHeart"), forState: UIControlState.Normal)
showPlayButton = true
print("wHeart ........")
break
}
}
}
//Set the array to userdefault
defaults.setObject(MutableArray, forKey: "Fav_Unfav")
defaults.setObject(u, forKey: "u")
defaults.setObject(i, forKey: "i")
defaults.synchronize()
}
}
override func viewWillAppear(animated: Bool) {
collectionView.reloadData()
if let CheckURL = defaults.objectForKey("u") {
uV = CheckURL.mutableCopy() as! NSArray
}
if let CheckImage = defaults.objectForKey("i"){
iV = CheckImage.mutableCopy() as! NSArray
}
print("uV values.. \(uV)")
print("iV values.. \(iV)")
}
class LiveCollectionViewCell: UICollectionViewCell{
var showPlayButton = true
var number = Int()
var secondNumber = Int()
@IBOutlet weak var playBt: UIButton!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var heartBt: UIButton!
@IBAction func heartBt(sender: UIButton) {
var btn : NSInteger
btn = sender.tag as NSInteger
let uValues = url[btn]
let iValues = image[btn]
if MutableArray[btn] as! String == "rheart" {
showPlayButton = false
}
if showPlayButton == true{
//Add this Line
MutableArray.replaceObjectAtIndex(btn, withObject: "rheart")
u.append(url[btn])
i.append(image[btn])
self.heartBt.setImage(UIImage(named: "rheart"), forState: UIControlState.Normal)
showPlayButton = false
print("rHeart xxxxxxxxxxxxxxx")
}else{
//Add this Line
MutableArray.replaceObjectAtIndex(btn, withObject: "wHeart")
for check in u {
number++
print(number)
if uValues == check{
print(u)
u.removeAtIndex(number-1)
number = 0
print("RemoVe at indext path")
print(u)
break
}
}
for check2 in i{
secondNumber++
print(secondNumber)
if iValues == check2{
print(i)
i.removeAtIndex(secondNumber-1)
secondNumber = 0
print("RemoVe at indext path")
print(i)
self.heartBt.setImage(UIImage(named: "wHeart"), forState: UIControlState.Normal)
showPlayButton = true
print("wHeart ........")
break
}
}
}
//Set the array to userdefault
defaults.setObject(MutableArray, forKey: "Fav_Unfav")
defaults.setObject(u, forKey: "u")
defaults.setObject(i, forKey: "i")
defaults.synchronize()
}
}
override func viewWillAppear(animated: Bool) {
collectionView.reloadData()
if let CheckURL = defaults.objectForKey("u") {
uV = CheckURL.mutableCopy() as! NSArray
}
if let CheckImage = defaults.objectForKey("i"){
iV = CheckImage.mutableCopy() as! NSArray
}
print("uV values.. \(uV)")
print("iV values.. \(iV)")
}
我已经检查了你的样本项目,我做了一个小的改变,现在它的工作良好
override func viewWillAppear(animated: Bool) {
collectionView.reloadData()
//You have check for availablity of favorute item before adding to userdefault
if u.count > 0 {
NSUserDefaults.standardUserDefaults().setObject(u, forKey: "u")
NSUserDefaults.standardUserDefaults().setObject(i, forKey: "i")
NSUserDefaults.standardUserDefaults().synchronize()
}
uV = NSUserDefaults.standardUserDefaults().arrayForKey("u")!
iV = NSUserDefaults.standardUserDefaults().arrayForKey("i")!
print("uV values.. \(uV)")
print("iV values.. \(iV)")
}
在将对象添加到Userdefault之前,请检查其可用性。现在它工作正常。请尝试一下,并让我知道响应
编辑:
我已经编辑了你的代码,现在它工作得很好,我听到的列表中列出了我所做的所有更改
var MutableArray:NSMutableArray!
let defaults = NSUserDefaults.standardUserDefaults()
override func viewDidLoad() {
super.viewDidLoad()
MutableArray = NSMutableArray()
if let HaveUrl = defaults.objectForKey("u"){
u = HaveUrl.mutableCopy() as! [NSString]
}
if let HaveImage = defaults.objectForKey("i"){
i = HaveImage.mutableCopy() as! [NSString]
}
if let CheckAvailability = defaults.objectForKey("Fav_Unfav"){
MutableArray = CheckAvailability.mutableCopy() as! NSMutableArray
}else{
for var Check in image {
print(Check)
MutableArray.addObject("wHeart")
}
}
}
cellForItemAtIndexPath:
//Add this New Line
cell.heartBt.setImage(UIImage(named: MutableArray[indexPath.row] as! String), forState: UIControlState.Normal)
class LiveCollectionViewCell: UICollectionViewCell{
var showPlayButton = true
var number = Int()
var secondNumber = Int()
@IBOutlet weak var playBt: UIButton!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var heartBt: UIButton!
@IBAction func heartBt(sender: UIButton) {
var btn : NSInteger
btn = sender.tag as NSInteger
let uValues = url[btn]
let iValues = image[btn]
if MutableArray[btn] as! String == "rheart" {
showPlayButton = false
}
if showPlayButton == true{
//Add this Line
MutableArray.replaceObjectAtIndex(btn, withObject: "rheart")
u.append(url[btn])
i.append(image[btn])
self.heartBt.setImage(UIImage(named: "rheart"), forState: UIControlState.Normal)
showPlayButton = false
print("rHeart xxxxxxxxxxxxxxx")
}else{
//Add this Line
MutableArray.replaceObjectAtIndex(btn, withObject: "wHeart")
for check in u {
number++
print(number)
if uValues == check{
print(u)
u.removeAtIndex(number-1)
number = 0
print("RemoVe at indext path")
print(u)
break
}
}
for check2 in i{
secondNumber++
print(secondNumber)
if iValues == check2{
print(i)
i.removeAtIndex(secondNumber-1)
secondNumber = 0
print("RemoVe at indext path")
print(i)
self.heartBt.setImage(UIImage(named: "wHeart"), forState: UIControlState.Normal)
showPlayButton = true
print("wHeart ........")
break
}
}
}
//Set the array to userdefault
defaults.setObject(MutableArray, forKey: "Fav_Unfav")
defaults.setObject(u, forKey: "u")
defaults.setObject(i, forKey: "i")
defaults.synchronize()
}
}
override func viewWillAppear(animated: Bool) {
collectionView.reloadData()
if let CheckURL = defaults.objectForKey("u") {
uV = CheckURL.mutableCopy() as! NSArray
}
if let CheckImage = defaults.objectForKey("i"){
iV = CheckImage.mutableCopy() as! NSArray
}
print("uV values.. \(uV)")
print("iV values.. \(iV)")
}
class LiveCollectionViewCell: UICollectionViewCell{
var showPlayButton = true
var number = Int()
var secondNumber = Int()
@IBOutlet weak var playBt: UIButton!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var heartBt: UIButton!
@IBAction func heartBt(sender: UIButton) {
var btn : NSInteger
btn = sender.tag as NSInteger
let uValues = url[btn]
let iValues = image[btn]
if MutableArray[btn] as! String == "rheart" {
showPlayButton = false
}
if showPlayButton == true{
//Add this Line
MutableArray.replaceObjectAtIndex(btn, withObject: "rheart")
u.append(url[btn])
i.append(image[btn])
self.heartBt.setImage(UIImage(named: "rheart"), forState: UIControlState.Normal)
showPlayButton = false
print("rHeart xxxxxxxxxxxxxxx")
}else{
//Add this Line
MutableArray.replaceObjectAtIndex(btn, withObject: "wHeart")
for check in u {
number++
print(number)
if uValues == check{
print(u)
u.removeAtIndex(number-1)
number = 0
print("RemoVe at indext path")
print(u)
break
}
}
for check2 in i{
secondNumber++
print(secondNumber)
if iValues == check2{
print(i)
i.removeAtIndex(secondNumber-1)
secondNumber = 0
print("RemoVe at indext path")
print(i)
self.heartBt.setImage(UIImage(named: "wHeart"), forState: UIControlState.Normal)
showPlayButton = true
print("wHeart ........")
break
}
}
}
//Set the array to userdefault
defaults.setObject(MutableArray, forKey: "Fav_Unfav")
defaults.setObject(u, forKey: "u")
defaults.setObject(i, forKey: "i")
defaults.synchronize()
}
}
override func viewWillAppear(animated: Bool) {
collectionView.reloadData()
if let CheckURL = defaults.objectForKey("u") {
uV = CheckURL.mutableCopy() as! NSArray
}
if let CheckImage = defaults.objectForKey("i"){
iV = CheckImage.mutableCopy() as! NSArray
}
print("uV values.. \(uV)")
print("iV values.. \(iV)")
}
请将图片上传到SO,而不是在google drive中共享(链接可能在几个月前断开,但除非您将其删除,否则人们会看到这个问题)我的个人资料声誉低于10我如何才能上传到SO?请将图片上传到SO,而不是在google drive中共享(链接可能在几个月前被破坏,但人们会看到这个问题,除非你删除它)我的个人资料声誉低于10我怎么能上传到这样的网站上?