我有public class MyLinearLayout {
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
mListener = listener;
for (int i = 0; i < getChildCount(); i++) {
getChildAt(i).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
listener.onClick(i);
}
});
}
}
}
和ViewController.class
在Menu.class
我创建并设置了所有按钮,在Menu.class
我将菜单添加到视图中。当我运行代码时,屏幕上会显示所有内容,但我无法按下按钮。
这就是我的ViewController的样子:
ViewController.class
这是我的菜单:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let menu = Menu()
menu.setupView(controller: self, width: 600, height: 120)
self.view.addSubview(menu)
// Do any additional setup after loading the view, typically from a nib.
}
}
我的错误是什么。我是否需要进行更多初始化以便能够检测到按下?
答案 0 :(得分:2)
这是你应该怎么做的。重复buttonTwo和label的操作。在viewDidLoad()中设置视图并在viewDidLayoutSubviews中设置框架。
如果你继承任何UIView,你应该在layoutSubviews()
中设置框架如果要在单击newGame时显示tableView,请创建一个新的UIViewController。在其中添加UITableView,就像在ViewController中添加Button和Label一样
import UIKit
class ViewController: UIViewController {
let buttonOne = UIButton()
let buttonTwo = UIButton()
let label = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
buttonOne.backgroundColor = UIColor.gray
buttonOne.setTitle("New Game", for: .normal)
buttonOne.titleLabel?.font = UIFont(name: "Helvetica", size: 42)
buttonOne.setTitleColor(UIColor.black, for: .normal)
buttonOne.addTarget(self, action: #selector(newGame), for: .touchUpInside)
view.addSubview(buttonOne)
view.addSubview(buttonTwo)
view.addSubview(label)
}
override func viewDidLayoutSubviews() {
buttonOne.frame = CGRect(x: 0, y: 300, width: 600, height: 120)
buttonOne.center.x = self.view.center.x
}
func newGame(sender: UIButton?) {
print("New Game")
}
}