【发布时间】:2016-12-29 20:28:23
【问题描述】:
是否可以在 UIViewController 和 UIView 之间传递数据? 如果是,怎么做?
例如,当您按下 button1 时,UIViewController 会告诉 UIView 该人按下了 button1,然后 UIView 会绘制一个三角形。但是,如果您随后按下 button2,UIViewController 会告诉 UIView 他现在按下了 button2,然后 UIView 会消除三角形并绘制一个圆圈。
按钮以编程方式构建。
问题是如何在 UIViewController 的 UIView 中调用我用 drawRect 绘制的形状。
class ViewController: UIViewController {
@IBOutlet var UnitViewTabeller: UnitView!
var btn: UIButton!
override viewDidLoad {
self.btn = UIButton(frame: CGRectMake(0.04 * view.bounds.width, 0.91 * view.bounds.height, 0.44 * view.bounds.width, 0.07 * view.bounds.height)) //set frame
self.btn.layer.cornerRadius = 10
self.btn.setTitle("0", forState: .Normal) //set button title
self.btn.setTitleColor(UIColor.whiteColor(), forState: .Normal) //set button title color
self.btn.backgroundColor = UIColor(red: 0.2745, green: 0.2784, blue: 0.2706, alpha: 1.0) //set button background color
self.btn.tag = 0 // set button tag
self.btn.addTarget(self, action: "btnclicked:", forControlEvents: .TouchUpInside) //add button action
self.view.addSubview(btn) //add button in view
self.btnArray.append(btw)
}
func btnclicked(sender: UIButton) {
//draw the circle from the UIView
}
}
class UnitView: UIView {
override func drawRect(rect: CGRect) {
let cirkel = UIGraphicsGetCurrentContext()
let rectangle = CGRect(x: 0.2 * bounds.width, y: 0.15 * bounds.height, width: 0.6 * bounds.width, height: 0.6 * bounds.width)
CGContextSetLineWidth(cirkel, 4.0)
CGContextAddEllipseInRect(cirkel, rectangle)
CGContextStrokePath(cirkel)
}
}
【问题讨论】:
-
是的,这是可能的。
-
"然后
UIView绘制一个三角形" ...如果您愿意,可以让UIView绘制东西,但使用CAShapeLayer是在视图中包含形状的更简单方法. -
我投反对票的原因......请研究首字母缩写词 MVC。模型-视图-控制器。将其输入谷歌可能只需要一点时间,但在对回报进行一个小时的研究之后呢?你会给自己的职业生涯一些步骤。 (我是在充分尊重您已经知道的情况下这么说的。但也要承认您似乎还不知道的事情。祝您好运!)如果您了解 MVC,您应该不仅知道控制器和控制器之间的“传递数据”观点是它的意义所在,但也有些事情不是它的意义所在。
-
这个问题太笼统了。你问如何添加按钮?您是通过编程方式还是通过 Interface Builder 进行操作?您是否在问如何将该按钮链接到某个方法(例如
@IBAction)?您是在问如何让该动作显示三角形或圆形?最重要的是,您确实应该编辑此问题,将其缩小到更具体的内容,澄清您的确切要求,并向我们展示您已经对该主题进行了哪些研究。请参考 Stack Overflow 上的帮助中心 about asking questions。 -
是的,你必须在学习上付出一些努力。我想说任何 iOS 初学者书籍/参考将告诉你如何做到这一点。这里有一些关于 SO 的文章可能会对您有所帮助:stackoverflow.com/questions/21652019/…、stackoverflow.com/questions/34348275/… RayWenderlich 上的一些内容:raywenderlich.com/86477/…
标签: ios swift uiview uiviewcontroller message-passing