更新更清楚,抱歉noob。
我设置了一个按钮,显示在tableview的每个部分的标题中,按钮出现并调用指定的函数,但是我想将部分数据传递给所调用的方法。
当我尝试使用UIButton.tag或者甚至将部分标题分配给按钮的textLabel标题时,它总是以nil的形式返回(即使部分标题显示正确)。
我需要将数据传递给函数,以便我知道我正在处理什么(我想使用另一个视图控制器将新数据添加到该特定部分的行中)。
类ViewController:UIViewController,UITableViewDataSource,UITableViewDelegate {
var sectionsDictionary:NSDictionary = ["Fruits" : ["Apple", "Pear", "Plum","Orange","Kiwi","Banana","Grape"], "Veggies" : ["Celery", "Carrots", "Lettuce","Brocoli","Squash"]]
var sectionTitlesArray = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
sectionTitlesArray = Array(sectionsDictionary.allKeys)
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return sectionTitlesArray.count
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var headerFrame:CGRect = tableView.frame
var title = UILabel(frame: CGRectMake(10, 10, 100, 30))
title.text = sectionTitlesArray.objectAtIndex(section) as? String
var headBttn:UIButton = UIButton.buttonWithType(UIButtonType.ContactAdd) as UIButton
headBttn.enabled = true
headBttn.titleLabel?.text = title.text
headBttn.addTarget(self, action: "showAddVC:", forControlEvents: UIControlEvents.TouchUpInside)
var headerView:UIView = UIView(frame: CGRectMake(0, 0, headerFrame.size.width, headerFrame.size.height))
headerView.addSubview(title)
headerView.addSubview(headBttn)
return headerView
}
func showAddVC(sender: UIButton!) {
println(sender.titleLabel?.text)
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
var headerFloat = CGFloat.abs(20)
return headerFloat
}
答案 0 :(得分:1)
Phew,明白了,我只能使用indexOfObject并在section in section中传递对象来使用.tag。
headBttn.tag = sectionTitlesArray.indexOfObject(sectionTitlesArray.objectAtIndex(section))
这给了.tag按下按钮的位置的索引,我稍后可以使用它。哇噢。