Ios Swift:如何在滚动视图中使用按钮
我已经创建了一个带有“按钮”的滚动视图。但“按钮”目前实际上没有任何作用。所以,我想知道,我如何才能使“按钮”可用。所以当我按下它们时,它们会引导我到另一个视图控制器。所有的按钮将引导我到同一个视图控制器,只是视图控制器中有不同的数据(取决于我希望该按钮表示的内容)。以下是我目前的代码:Ios Swift:如何在滚动视图中使用按钮,ios,swift,scrollview,Ios,Swift,Scrollview,我已经创建了一个带有“按钮”的滚动视图。但“按钮”目前实际上没有任何作用。所以,我想知道,我如何才能使“按钮”可用。所以当我按下它们时,它们会引导我到另一个视图控制器。所有的按钮将引导我到同一个视图控制器,只是视图控制器中有不同的数据(取决于我希望该按钮表示的内容)。以下是我目前的代码: @IBOutlet weak var categoryScrollView: UIScrollView! var categoryArr = ["Button1","Button2","But
@IBOutlet weak var categoryScrollView: UIScrollView!
var categoryArr = ["Button1","Button2","Button3","Button4","Button5", "Button 6", "Button 7", "Button 8", "Button 9", "Button 10", "Button 11", "Button 12"]
var buttonColors = [UIColor.greenColor(), UIColor.blueColor(), UIColor.blackColor(), UIColor.cyanColor(), UIColor.magentaColor(), UIColor.greenColor(), UIColor.blueColor(), UIColor.blackColor(), UIColor.cyanColor(), UIColor.magentaColor(), UIColor.blackColor(), UIColor.brownColor()]
let kPadding:CGFloat = 20
override func viewDidLoad() {
super.viewDidLoad()
let buttonSize = CGSizeMake(categoryScrollView.bounds.size.width/2, categoryScrollView.bounds.size.height/2)//hal
let scrollingView = colorButtonsView(buttonSize, buttonCount: 12)
categoryScrollView.contentSize = scrollingView.frame.size
categoryScrollView.addSubview(scrollingView)
categoryScrollView.showsVerticalScrollIndicator = false
categoryScrollView.delegate = self
categoryScrollView.pagingEnabled = true
categoryScrollView.indicatorStyle = .Default
categoryScrollView.contentOffset = CGPointMake(0, 0)
}
func colorButtonsView(buttonSize:CGSize, buttonCount:Int) -> UIView {
let buttonView = UIView()
buttonView.frame.origin = CGPointMake(50,300)
let padding = CGSizeMake(kPadding, kPadding)
buttonView.frame.size.width = (buttonSize.width + padding.width) * CGFloat(buttonCount)
var buttonPosition = CGPointMake(0, padding.height)
let buttonIncrement = buttonSize.width + padding.width
for i in 0...(buttonCount - 1) {
let button = UIButton(type: .Custom)
button.frame.size = buttonSize
button.frame.origin = buttonPosition
buttonPosition.x = buttonPosition.x + buttonIncrement
button.setTitle(categoryArr[i], forState: UIControlState.Normal)
button.backgroundColor = buttonColors[i]
buttonView.addSubview(button)
}
buttonView.backgroundColor = UIColor.redColor()
return buttonView
}
}
extension ViewController:UIScrollViewDelegate{
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let index = round(scrollView.contentOffset.x / scrollView.frame.size.width)
print(index)
}
}您必须将目标添加到按钮才能触发某些动作方法。与创建UIButton时在循环中一样,添加
button.addTarget(self, action: "pressed:", forControlEvents: .TouchUpInside)
并实现一种方法,如:
func pressed(sender: UIButton!) {
// navigation code here.
}
创建按钮时,必须指定一个目标,以便对其执行操作(将其添加到for循环中): 然后创建相应的方法
func myaction(sender: UIButton!) {
// navigation code here.
}
请注意,您不必创建多个方法来为每个按钮执行不同的操作,只需执行以下操作:
button.tag = i
然后在你的行动方法中:
switch sender.tag {
case 0 :
//do some stuff
case 1 :
//do some stuff
}
不清楚“什么都不要做”是什么意思,您是否设置了目标/选择器?他们只是对被窃听没有反应吗?你知道我会把这个密码放在这里吗?我有一个错误,上面写着:“视图控制器”没有成员“addTarget”。将它放在viewDidLoad方法之外的任何位置(这是触发上一个错误的原因)会导致一个错误,表明没有声明。
switch sender.tag {
case 0 :
//do some stuff
case 1 :
//do some stuff
}