对于TableView Controller中的Loop through单元格

时间:2015-07-23 15:08:17

标签: ios uitableview

我实际上正试图接近一个带有假日检查清单(HolidayTVC)的小应用程序。

为此,我配置了以下内容:

    func configuredMailComposeViewController() -> MFMailComposeViewController {


    var row = ""


    for cell in tableView.visibleCells() as! [HolidayTVCell] {

        var name = cell.labelName.text
        var toDo = cell.labelDetail2.text
        var plantimg = cell.imagePlant.image


        var newlineimg = "picture\n"
        var newlineplant = name! + "<br>" + toDo
        var row = (row + newlineimg + newlineplant) as String

    }

   var mail = row
   println(row)





    let mailComposerVC = MFMailComposeViewController()
    mailComposerVC.mailComposeDelegate = self


    mailComposerVC.setToRecipients(["example@mail.com"])
    mailComposerVC.setSubject("Holiday Plan")
    mailComposerVC.setMessageBody(mail, isHTML: true)

    return mailComposerVC
}

for循环的输出为零。我无法打印一条线。也许我对此的态度非常老派,因为我已经习惯了其他语言。

谢谢! 丹

2 个答案:

答案 0 :(得分:1)

我很高兴Losiowaty解决了你的直接问题,但我不建议迭代visibleCells。如果有多于目前可见的项目怎么办?

通常,您不应该从UI控件中提取数据。该应用程序可能有一些用于填充单元格的模型数组,因此在发送此电子邮件时,应用程序应该返回到该模型数组并从那里提取数据。不要从细胞中提取数据。

答案 1 :(得分:0)

var row = ""
for cell in tableView.visibleCells() as! [HolidayTVCell] {

    var name = cell.labelName.text
    var toDo = cell.labelDetail2.text
    var plantimg = cell.imagePlant.image


    var newlineimg = "picture\n"
    var newlineplant = name! + "<br>" + toDo
    var row = (row + newlineimg + newlineplant) as String // <<--- issue here!

}
var mail = row
println(row)

问题在于标记线。您正在创建另一个row变量,它隐藏了在循环外声明的变量。只需删除标记行中的var,就可以了。