为啥我不能在 Swift 中将对象数组返回给 UIStackView? [复制]
Posted
技术标签:
【中文标题】为啥我不能在 Swift 中将对象数组返回给 UIStackView? [复制]【英文标题】:Why can't I return an array of objects to UIStackView in Swift? [duplicate]为什么我不能在 Swift 中将对象数组返回给 UIStackView? [复制] 【发布时间】:2017-05-31 00:31:29 【问题描述】:import UIKit
class MenuBar: UIView
let buttonWidth = 50
let friendsButton: UIImageView =
let imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.image = #imageLiteral(resourceName: "Friends Button")
imageView.contentMode = .scaleAspectFill
imageView.widthAnchor.constraint(equalToConstant: 50)
imageView.heightAnchor.constraint(equalToConstant: 50)
return imageView
()
创建好友按钮
let circleButton: UIImageView =
let imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.image = #imageLiteral(resourceName: "Small Circle Button")
imageView.contentMode = .scaleAspectFill
imageView.widthAnchor.constraint(equalToConstant: 50)
imageView.heightAnchor.constraint(equalToConstant: 50)
return imageView
()
创建一个圆形按钮
let profileButton: UIImageView =
let imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.image = #imageLiteral(resourceName: "Profile Button")
imageView.contentMode = .scaleAspectFill
imageView.widthAnchor.constraint(equalToConstant: 50)
imageView.heightAnchor.constraint(equalToConstant: 50)
return imageView
()
创建个人资料按钮
let stackView = UIStackView(arrangedSubviews: [profileButton, circleButton, profileButton])
最后一行是给我错误的行:cannot use instance member 'profileButton inside property initializer
【问题讨论】:
错误是什么? 用错误更新您的问题。然后在错误中搜索很多答案。 【参考方案1】:您收到的错误消息的重要部分是您遗漏的第二部分。它是property initializer is initialized before self
。
在没有属性初始化模式的情况下重写后出现的下一个错误是Expected declaration
。这意味着 code segment
需要在函数内部。比如viewDidLoad()
。
因此,要使其正常工作,您的代码需要修改为类似于:
import UIKit
class MenuBar: UIView
func createStackView() -> UIStackView
let buttonWidth = 50
let friendsButton = UIImageView()
friendsButton.translatesAutoresizingMaskIntoConstraints = false
friendsButton.image = #imageLiteral(resourceName: "Friends Button")
friendsButton.contentMode = .scaleAspectFill
friendsButton.widthAnchor.constraint(equalToConstant: 50)
friendsButton.heightAnchor.constraint(equalToConstant: 50)
let circleButton = UIImageView()
circleButton.translatesAutoresizingMaskIntoConstraints = false
circleButton.image = #imageLiteral(resourceName: "Small Circle Button")
circleButton.contentMode = .scaleAspectFill
circleButton.widthAnchor.constraint(equalToConstant: 50)
circleButton.heightAnchor.constraint(equalToConstant: 50)
let profileButton = UIImageView()
profileButton.translatesAutoresizingMaskIntoConstraints = false
profileButton.image = #imageLiteral(resourceName: "Profile Button")
profileButton.contentMode = .scaleAspectFill
profileButton.widthAnchor.constraint(equalToConstant: 50)
profileButton.heightAnchor.constraint(equalToConstant: 50)
let stackView = UIStackView(arrangedSubviews: [profileButton, circleButton, profileButton])
return stackView
【讨论】:
在您确认它有效之后。请接受答案,所以我得到 15 分。如果您还有其他问题,请发表评论。以上是关于为啥我不能在 Swift 中将对象数组返回给 UIStackView? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能将从 Firestore 获取的值分配给 Swift 中的数组?
在 swift 中将 String 类型数组转换为 Float 类型数组 不能将类型 'String' 的值分配给类型 'Double' 的下标。