gpt4 book ai didi

ios - 为数组中的每个对象添加按钮

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:31 25 4
gpt4 key购买 nike

我有一个对象数组,我想为数组中的每个对象分配一个按钮。我做得对吗?按钮没有显示在 View 上,我认为没有调用 for 循环。我希望按钮处于随机位置,每个按钮都不同。我究竟做错了什么?我正在使用解析来检索距某个点一定距离的对象,这是有效的。

var locationarray = [AnyObject]()
var userbutton = [UIButton]()

override func viewWillAppear(animated: Bool) {
let userlocation = PFUser.query()
PFGeoPoint.geoPointForCurrentLocationInBackground(){
(point:PFGeoPoint?, error:NSError?) -> Void in
NSLog("Test log 1") // Never printed

if point != nil {
// Succeeding in getting current location
NSLog("Got current location successfully") // never printed
PFUser.currentUser()!.setValue(point, forKey: "userlocation")
PFUser.currentUser()!.saveInBackground()
} else {
// Failed to get location
NSLog("Failed to get current location") // never printed
}

var query = PFUser.query()
query?.whereKey("userlocation", nearGeoPoint: point!, withinMiles: 2.0)
query?.findObjectsInBackgroundWithBlock({ (objects: [AnyObject]?, error: NSError?) -> Void in
if(error == nil){
for object in objects! {
self.locationarray.append(object)
print(self.locationarray)
}
}else{
print(error)
}
})
}

for users in locationarray{
let button = UIButton()
button.addTarget(self, action: "buttonAction:", forControlEvents: .TouchUpInside)
button.frame = CGRectMake(100, 100, 100, 50)

let buttonWidth = button.frame.width
let buttonHeight = button.frame.height

// Find the width and height of the enclosing view
let viewWidth = button.superview!.bounds.width
let viewHeight = button.superview!.bounds.height


let xwidth = viewWidth - buttonWidth
let yheight = viewHeight - buttonHeight

// Generate a random x and y offset
let xoffset = CGFloat(arc4random_uniform(UInt32(xwidth)))
let yoffset = CGFloat(arc4random_uniform(UInt32(yheight)))

// Offset the button's center by the random offsets.
button.center.x = xoffset + buttonWidth / 2
button.center.y = yoffset + buttonHeight / 2

self.userbutton.append(button)
print("called")
print(self.userbutton)
self.view.addSubview(button)
}
}

最佳答案

我在您的代码中发现问题 - findObjectsInBackgroundWithBlock 是异步函数,您的位置数组循环在 findObjectsInBackgroundWithBlock 完成之前被调用。由于此时 locationArray 为空 - 不会调用 for 循环。

试试这个,使用这种方法 locationsSet 只有在从服务器接收到所有对象时才会被调用。

override func viewWillAppear(animated: Bool) {
let userlocation = PFUser.query()
PFGeoPoint.geoPointForCurrentLocationInBackground(){
(point:PFGeoPoint?, error:NSError?) -> Void in
NSLog("Test log 1") // Never printed

if point != nil {
// Succeeding in getting current location
NSLog("Got current location successfully") // never printed
PFUser.currentUser()!.setValue(point, forKey: "userlocation")
PFUser.currentUser()!.saveInBackground()
}else{
// Failed to get location
NSLog("Failed to get current location") // never printed
}

var query = PFUser.query()
query?.whereKey("userlocation", nearGeoPoint: point!, withinMiles: 2.0)
query?.findObjectsInBackgroundWithBlock({ (objects: [AnyObject]?, error: NSError?) -> Void in
if(error == nil){
for object in objects! {
self.locationarray.append(object)
print(self.locationarray)
}

self.locationsSet()

}else{
print(error)
}
})
}
}

func locationsSet(){
for users in locationarray{
let button = UIButton()
button.addTarget(self, action: "buttonAction:", forControlEvents: .TouchUpInside)
button.frame = CGRectMake(100, 100, 100, 50)

let buttonWidth = button.frame.width
let buttonHeight = button.frame.height

// Find the width and height of the enclosing view
let viewWidth = self.view.bounds.width
let viewHeight = self.view.bounds.height


let xwidth = viewWidth - buttonWidth
let yheight = viewHeight - buttonHeight

// Generate a random x and y offset
let xoffset = CGFloat(arc4random_uniform(UInt32(xwidth)))
let yoffset = CGFloat(arc4random_uniform(UInt32(yheight)))

// Offset the button's center by the random offsets.
button.center.x = xoffset + buttonWidth / 2
button.center.y = yoffset + buttonHeight / 2

self.userbutton.append(button)
print("called")
print(self.userbutton)
self.view.addSubview(button)
}
}

关于ios - 为数组中的每个对象添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34217452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com