[<Register ("ChatViewCell")>]
type ChatViewCell (handle: IntPtr) as this =
inherit UICollectionViewCell (handle)
[<DefaultValue>] static val mutable private id : NSString
static member init =
printfn "Initializing ChatViewCell."
ChatViewCell.id <- new NSString("ChatCell")
override this.ReuseIdentifier = ChatViewCell.id
let mutable profileImageView = new UIImageView()
let mutable nameLabel = new UILabel()
let mutable messageLabel = new UILabel()
let mutable timeofMessageLabel = new UILabel()
let mutable dividerLineView = new UIView()
let mutable countLabel = new UILabel()
let setupView() =
profileImageView.Frame <- CGRect(50.0, 0.0, 200.0, 100.0)
profileImageView.ContentMode <- UIViewContentMode.ScaleAspectFill
profileImageView.Layer.CornerRadius <- Conversions.nfloat(30)
我有以下UICollectionViewCell
,我想在初始化单元格时调用setupView
方法。但是,setupView
方法似乎无法在init
中使用init
方法。我尝试将其移到sudo R CMD javareconf
上方,但是,这也不起作用。
答案 0 :(得分:1)
setupView
被定义为实例函数,因为它没有static
修饰符。它必须是实例函数(或实例方法),因为它访问profileImageView
这是一个实例字段。
静态成员init
无法调用实例函数,因为无法将实例显式传递给实例函数(您只能将实例显式传递给方法)。
如果你想在构造ChatViewCell
时做一些初始化,你可以简单地将初始化语句放在类的主体中。执行此操作时,您需要使用通常隐含的do
关键字。
e.g。
type ChatViewCell (handle: IntPtr) as this =
inherit UICollectionViewCell (handle)
let mutable profileImageView = new UIImageView()
do profileImageView.Frame <- CGRect(50.0, 0.0, 200.0, 100.0)
do profileImageView.ContentMode <- UIViewContentMode.ScaleAspectFill
do profileImageView.Layer.CornerRadius <- Conversions.nfloat(30)
有用的参考资料: