2015-07-23 4 views
0

Я действительно пытаюсь подойти к небольшому приложению, которое отправляет почту с контрольным списком праздника (HolidayTVC).Для сквозных ячеек в контроллере TableView

Для этого я установил следующее:

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(["[email protected]"]) 
    mailComposerVC.setSubject("Holiday Plan") 
    mailComposerVC.setMessageBody(mail, isHTML: true) 

    return mailComposerVC 
} 

Выход для цикла равна нулю. Я не мог напечатать строку. Возможно, мой подход к этому - очень старая школа, когда я привык к другим языкам.

Спасибо! Dan

ответ

1

Я рад, что Losiowaty обратился к вашему непосредственному вопросу, но я не советовал бы итерации через visibleCells. Что делать, если было больше предметов, чем было видно в настоящее время?

Как правило, вы не должны извлекать данные из элементов управления пользовательского интерфейса, независимо. У приложения предположительно есть некоторый модельный массив, который используется для заполнения ячеек, поэтому при отправке этого письма приложение должно вернуться к этому массиву модели и вытащить данные оттуда. Не извлекайте данные из ячеек.

+0

Благодарим вас за ответ. вы правы ... за ним стоит объект coredata. но я использую функцию внутри TableView, которая не хранит внутренние данные ядра. –

+0

Есть ли шанс сделать то и другое, или я должен считать coredata? –

+0

Если вы загрузили все основные данные в некоторую коллекцию в памяти, вы можете использовать эту коллекцию. Если нет, вернитесь к Core Data. – Rob

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 в отмеченной строке, и все должно быть хорошо.

+0

Большое вам спасибо ... Я не знал, что это такая небольшая ошибка ... –

+0

Без проблем, рад помочь. Маленьким иногда бывает трудно уловить. – Losiowaty

Смежные вопросы