2015-08-14 3 views
1

Мне нужно сохранить идентификатор в cell, а также текст (для отображения в списке). Итак, как я могу сохранить 2 значения в ячейке?Сохранить второе значение в ячейке

Это то, что у меня есть

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("sentence", forIndexPath: indexPath) as! UITableViewCell 


    //Get list 
    var request = NSURLRequest(URL: url!) 
    var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil) 
    if data != nil { 
     var dataArray = JSON(data: data!) 
     var item: NSMutableArray = [] 

     //Get IDs 
     for (key, data) in dataArray { 
      var name = data["dutch_sentence"] 
      println(name) 
      item.addObject(name.string!) 
     } 

     cell.textLabel!.text = item[indexPath.row] as? String 
     return cell 

    } 
    else{ 
     println("Out") 
     return cell; 
    } 
} 

Но я хочу, чтобы отправить идентификатор вместе тоже, потому что я хочу, чтобы использовать его для URL массива JSON в следующем виде. Так что мне нужно что-то вроде:

cell.id = 2 

Чтобы быть в состоянии назвать его в didSelectRowAtIndexPath Как я могу это сделать?

+0

Не используйте ячейку просмотра таблицы в качестве хранилища данных! Это плохая идея. –

+0

Как еще я мог это сделать? Когда я нажимаю на ячейку, я хочу отправить несколько значений во второе представление, но не могу понять, как это сделать. –

ответ

3

Хранение данных во взглядах очень плохое дизайнерское решение. Вы должны сохранить свои данные в массиве, а затем получить доступ к нему на основе indexPath.row:

let ids = [5, 10, 20] 

public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let id = ids[indexPath.row] 
} 
+0

Спасибо большое! И ты был прав, таким образом он выглядит намного чище! –

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