自定义类视图和选择器引用

时间:2016-07-14 04:43:23

标签: ios swift

我正在创建一个自定义类,它只有一些基本函数,我可以在任何viewController中初始化类后重复使用。问题是我不知道如何引用视图或#selector中调用的任何函数,我得到错误:使用未解析的标识符“view”。有谁知道这是怎么做的?下面的示例是创建一个新的UIButton。

 Subject     Rspan NsCond
1       1 0.2916667   Pink
2       1 1.0000000   Pink
3       1 0.2916667 Babble
4       1 1.0000000 Babble
5       1 0.2916667   Loss
6       1 1.0000000   Loss

(问题行)

查看 .bounds.width

import Foundation
import UIKit

class Utils {

var newUpdatesBtn: UIButton!

func setupButtonNewUpdates() {
    newUpdatesBtn = UIButton(type: UIButtonType.System) // .System
    newUpdatesBtn.setTitle("New Updates", forState: UIControlState.Normal)
    newUpdatesBtn.bounds = CGRect(x: 0, y: 0, width: 123, height: 27)
    newUpdatesBtn.center = CGPoint(x: view.bounds.width / 2, y: 90) // 80 point button, 20 point status bar, 40 point half button, 8 point margins
    newUpdatesBtn.setBackgroundImage(UIImage(named: "new-updates"), forState: UIControlState.Normal)
    newUpdatesBtn.titleLabel?.font = UIFont.systemFontOfSize(14)
    newUpdatesBtn.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
    newUpdatesBtn.addTarget(self, action: #selector(newUpdatesButtonPressed), forControlEvents: UIControlEvents.TouchUpInside)
    self.newUpdatesBtn.alpha = 0;
    self.navigationController!.view.addSubview(newUpdatesBtn)
    UIView.animateWithDuration(0.3, animations: { () -> Void in
        self.newUpdatesBtn.alpha = 1;
    })
}

}

1 个答案:

答案 0 :(得分:1)

这是因为您尚未在view属性中设置任何引用。 你可以这样做:

func setupButtonNewUpdates(targetView:UIView)
{
newUpdatesBtn = UIButton(type: UIButtonType.System) // .System
.
.
.
newUpdatesBtn.center = CGPoint(x: targetView.bounds.width / 2, y: 90) // 80 point button, 20 point status bar, 40 point half button, 8 point margins
.
.
.
targetView.addSubView(newUpdatesBtn);
}

现在,无论何时从任何viewcontroller调用此方法,只需传递该VC的视图即可。例如:

var util:Utils = new Utils();
util.setupButtonNewUpdates(self.view);