2016-05-21 3 views
0

У меня есть приложение, которое отображает игроков через Tableview. Пользователь может «добавить» нового игрока и ввести его имя, высоту, вес, изображение и т. Д. ... и после сохранения будет добавлен в Tableview. Они также могут нажимать на каждого игрока, и он переносит их в контроллер подробного представления игрока, где он отображает всю введенную информацию (имя, высота, вес, бросок, летучая мышь, положение и т. Д.). Это текущий код, когда пользователь нажимает на игрок, чтобы взять их на страницу проигрывателя детали:Tableview, переносящие одни и те же данные в другой Tableview

var player2 = [Player]() 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "detail" { 
     let playerDetailScreen = segue.destinationViewController as! PlayerDetailViewController 

     if let selectedPlayerCell = sender as? PlayerListTableViewCell { 
      let indexPath = tableView.indexPathForCell(selectedPlayerCell)! 
      let selectedPlayer = player2[indexPath.row] 

      playerDetailScreen.playereDetail = selectedPlayer 
     } 

    } 
} 

Я пытаюсь реализовать TableView внутри контроллера представления, когда пользователь добавляет новый игрок и вводит информацию , В этом представлении таблицы пользователь может добавлять команды или годы, которые кто-то играл (я использую табличное представление, потому что количество записей может меняться). Мой вопрос - лучший способ сделать это? Прямо сейчас у меня есть 2-й класс с именем Teams.swift для этого вида таблицы, но это лучший способ сделать это? Идея состоит в том, чтобы затем отображать эти данные в виде таблицы на странице подробностей (опять же, поскольку записи будут меняться по количеству), так как я могу передавать данные из одного табличного представления в другое?

Следует ли исключить класс [Teams] и просто поместить его под класс [Player]? Любые мысли будут оценены!

+0

Это си хорошо распределить ваши функциональность и не писать беспорядочный код в одном ViewCo ntroller. Но это зависит от потока вашего приложения. – Evana

ответ

0

Во-первых, я рекомендовал бы использовать:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    // what happens when user selects a cell 
let cell = self.tableView.cellForRowAtIndexPath.indexPath // This will give you cell that was selected 
let selectedPlayer = cell.player // This gives you the instance of the player (Benefit of using player class) 
self.performSegueWithIdentifier("identifier", sender : selectedPlayer) 

//^This will automatically call prepareforseque method. 
} 

Следующая, внутри prepareforsegue метод, сделайте следующее:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
if segue.identifier == "detail" { 
    let playerDetailScreen = segue.destinationViewController as! PlayerDetailViewController 

    let selectedPlayer = sender as! Player 
    playerDetailScreen.name = self.selectedPlayer.name 
    playerDetailScreen.height = self.selectedPlayer.height 
    ... so on. 
    // So, remember to create property for each name, height, etc. 
    // inside playerDetailScreen 
    // This is how you can transfer data 


    } 

} 

}

+0

отлично, спасибо за совет! В didSelectRowatIndexPath, для let slectedPlayer = cell.player, он говорит: «Не имеет участника-члена» Откуда вы получили cell.player? –

+0

Эй, я бы рекомендовал вам сделать отдельный класс для вашей камеры. В этом классе создайте свойство Player (экземпляр класса игрока). Это не должно быть UIOutlet, просто используйте его для переноса информации об игроке. –

+0

Чтобы понять это лучше, посмотрите это видео: «XCode 5 Tutorial Table View Part 1 - Population The Table - Geeky Lemon Development» на youtube. –

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