为啥我不能在 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' 的下标。

Swift - 为啥 Process.arguments 返回空数组

为啥我不能在c中将字符串转换为int

为啥我不能在 Ruby 中将块传递给 proc?

如何在 Swift 中将对象数组发送到服务器?