Table Cell中的UIButton不会在Swift

时间:2016-02-24 18:45:48

标签: ios swift uitableview uibutton

我有一个问题我无法在任何地方解决它。我有一个视图控制器,里面有一个表视图。此表视图显示了一些数据,并有一个按钮,通过该行的某些数据移动到另一个视图控制器。但不幸的是,我甚至无法转移到另一个视图控制器。已经尝试过仅使用Storyboard,并通过protocol / delegate以编程方式进行尝试。 有人能帮我吗? Storyboard

关注一些代码: func tableView(tableView:UITableView,numberOfRowsInSection section:Int) - > Int {         返回NumberOfRows     }

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var Cont = 0
    for var i = indexPath.row ; i>0; i-- {
        Cont += QuantidadeCombustivel[i]
    }
    let cell = tableView.dequeueReusableCellWithIdentifier("PostoTableViewCell", forIndexPath: indexPath) as! PostoTableViewCell

    if (self.NomesArray.count != 0) && (self.imagensArray.count != 0) {
        cell.NomePosto.text = self.NomesArray[indexPath.row]
        cell.BandeiraPosto.imageFromUrl(self.imagensArray[indexPath.row])
        cell.distanciaLabel.text = "Distância: \(self.DistanciaArray[indexPath.row])"
        var result = ""
        for i in Cont...Cont+self.QuantidadeCombustivel[indexPath.row+1]-1 {
            result += ("\(self.NomeCombustivel[i]) : \(self.ValorCombustivel[i])\n")
        }
        cell.ListaCombustivel?.text = result;

    }


    return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    openMapForPlace(indexPath.row)
}

类PostoTableViewCell:UITableViewCell {

@IBOutlet weak var BandeiraPosto: UIImageView!

@IBOutlet weak var NomePosto: UILabel!

@IBOutlet weak var ListaCombustivel: UITextView!

@IBOutlet weak var distanciaLabel: UILabel!

@IBOutlet weak var SgInfoPosto: UIButton!

2 个答案:

答案 0 :(得分:0)

你必须这样做

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! TableViewCell

    cell.button.tag = indexPath.row

    return cell

}

@IBAction func buttonPressed(sender: AnyObject) {
    print(sender.tag)
    self.performSegueWithIdentifier("yourSegueIdentifier", sender: tableView)
}

答案 1 :(得分:-2)

考虑2个ViewCOntrollers,带按钮的那个让它说它是FirstVC,目的地叫做SecondVC.Check是你的FirstVC嵌入导航控制器吗?。如果没有那么首先将它嵌入导航控制器单击FirstVC,然后单击Editor选项卡,在其中单击embed,然后嵌入Navigation Controler,然后在Storyboard中将FirstVC中的segue提供给SecondVC。之后,在按钮操作方法中编写以下代码。

[self performSegueWithIdentifier:@"SegueIdentifier" sender:nil];

在发件人中,您也可以传递数组。

然后写一个方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
      SecondVC *destination = [segue destinationViewController];
}

否则你也可以使用下面的代码 在您的按钮操作方法中,编写以下代码

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];

 SecondVC* secondVC = [storyboard instantiateViewControllerWithIdentifier:@"StoryboardIdentifier"];
[self.navigationController pushViewCpntroller:secondVC animated:YES];