我有一个创建 ScrollView “personsScrollView”的函数。
@IBOutlet var personsScrollView: UIScrollView!
var personsScroll = UIView()
personsScroll = createPersonsScroll(CGSizeMake(60.0, 80.0), avatarCount: 10)
func createPersonsScroll(buttonSize:CGSize, avatarCount:Int) -> UIView {
let padding = CGSizeMake(10, 10)
let personButtonView = UIView()
var buttonPosition = CGPointMake(padding.width * 0.5, padding.height)
let buttonIncrement = buttonSize.width + padding.width
personButtonView.frame.origin = CGPointMake(0,0)
personButtonView.frame.size.width = (buttonSize.width + padding.width) * CGFloat(avatarCount+1)
personButtonView.frame.size.height = (buttonSize.height + 2.0 * padding.height)
for i in 0...(avatarCount-1) {
let button = UIButton(type: .Custom)
button.tag = i
button.frame.size = CGSize(width: 60, height: 55)
button.frame.origin.x = buttonPosition.x
button.imageView?.contentMode = UIViewContentMode.ScaleAspectFit
button.setImage(UIImage(named: self.person[button.tag].avatar), forState: .Normal)
button.addTarget(self, action: "addPersonSelected:", forControlEvents: .TouchUpInside)
buttonPosition.x = buttonPosition.x + buttonIncrement
let label = UILabel(frame: CGRectMake(0, 60, 60, 15))
label.text = self.person[i].name
button.addSubview(label)
personButtonView.addSubview(button)
}
}
personsScrollView.contentSize = personButtonView.frame.size
personsScrollView.addSubview(personButtonView)
return personButtonView
}
此函数创建一个 UIView“personButtonView”,它将包含 10 个 UIbuttons“按钮”,每个按钮都有不同的图像。 我的问题是,在代码之外,在 ViewDidLoad() 中,我如何访问例如第二个按钮的图像以仅替换该图像?或者如何访问第 4 个按钮的标签以更改其文本?
非常感谢您的帮助! 提前致谢!
最佳答案
查看此代码,正在创建 View 和 subview 的层次结构。如果您想要一种干净的方式来访问这些,那么您可以简单地创建 UIView 子类来封装您的内容。
为此,请将 createPersonsScroll
中的代码重构为初始化程序。我可以看到正在创建多个 UIButton View ,因此您可以定义一个 AvatarButton
类来封装它们,并且可能还为它的父级定义一个 PersonView
类,具有一个属性来访问它的内容。
这个想法是你可以替换
personsScroll = createPersonsScroll(buttonSize: CGSizeMake(60.0, 80.0), avatarCount: 10)
例如:
personView = PersonView(CGSizeMake(60.0, 80.0), avatarCount: 10)
// ...
personView.avatarButtons[2].image = myImage
personView.avatarButtons[4].text = myString
关于swift - 在 Swift 中访问 UIScrollView 的 UIView 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34996590/