2016-03-30 4 views
3

Я хочу добиться чего-то похожего на следующий пример изображения , где я хочу представить выбранную или стандартную категорию на первом экране , и когда он щелкнет, он переместится на следующий экран с другие категории.Swift 2.1 - Использование UITableView для одной ячейки

В этом примере, где сказано, что Entertainment и Project 01 представляют разные объекты данных (хранилище данных), и похоже, что он использует UITableView с каждым UITableViewCell, подключенным к другому хранилищу данных. Прежде всего я хочу знать, насколько корректен мой анализ.

В моем случае мне просто нужно сделать это Entertainment, а на следующем экране показать все параметры категории, как второй экран в примере. И после того, как выбор сделан, первый экран должен отражать выбор со второго экрана.

UITableПросмотреть правильный выбор, чтобы показать это одно поле (ячейку) и перейти к другому ViewController?

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

enter image description here

+0

Почему бы и нет? Все просто данные, вы нажимаете на ячейку, доводите до второго, а затем во втором, пользователь выбирает sth, и вызываете 1-й, как делегат, что-то делать с этими данными, и можете даже изменить все в 1-м VC, не имеет значения, если ваш tableView просто удерживая 1 ячейку или много ячеек – Tj3n

+0

проверьте ниже, как работает делегат, и все http://stackoverflow.com/questions/35242058/swift-pass-data-from-popover-controller-to-previous-controller/35242265#35242265 –

ответ

2

Да UITableView - хороший вариант. Просто создайте метод делегата в классе «выбрать категорию». Вызовите делегата по методу didSelectRowAtIndexPath UITableView в классе категории. Затем назначьте класс Expense в качестве делегата для класса категории.

В основном вы будете выполнять сеанс, как только вы нажмете на развлечения. Пользователю будет предложено «Выбрать категорию». После выбора пользователем строки таблицы. Будет вызван делегат. Внесите этот делегат в класс расходов. И в реализации просто перезагрузите таблицу новым значением.

UPDATE:

Ваш выбор категории класс будет что-то подобное:

import UIKit 

protocol ChooseCategoryControllerDelegate: class { 
func categoryController(controller: ChooseCategoryTableViewController, didSelectCategory category: String) 
} 

class ChooseCategoryTableViewController: UITableViewController { 

let categories = ["category1","category2","category3","category4"] 
var selectedcategory: String! 
weak var delegate: ChooseCategoryControllerDelegate! 

// MARK: - Table view data source 
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
return categories.count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
let cell = tableView.dequeueReusableCellWithIdentifier("TypeCell", forIndexPath: indexPath) 

cell.textLabel?.text = categories[indexPath.row] 

return cell 
} 

// MARK: - Table view delegate 
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
selectedcategory = categories[indexPath.row] as? String 
delegate.categoryController(self, didSelectCategory: selectedcategory) 
} 
} 

В контроллере расхода добавить следующий код вне вашего объявления класса:

extension ExpenseController: ChooseCategoryControllerDelegate { 
func typesController(controller: ChooseCategoryTableViewController, didSelectCategory category: String) { 
let selectedCategory = category 
dismissViewControllerAnimated(true, completion: nil) 

//update your table category with the new category!! 
//reload your table here 
} 
} 

Re-Update :

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
if segue.identifier == "CategorySegue" { 

    let controller = segue.destinationViewController as! ChooseCategoryTableViewController 

    controller.delegate = self 
} 
} 

Также назовите ваш сегмент как «CategorySegue»

+0

Спасибо. Я немного потерял, какой метод делегата следует вызывать и назначать ему. Не могли бы вы разделить структуру кода? –

+0

пожалуйста, приведенный выше код –

+0

Я буду ссылаться на эту структуру и держать вас в курсе, как я иду, спасибо! –

1

Это зависит от того, если единственным вариантом является то, возможно, развлечения UITableView не самый лучший вариант. Несмотря на это, вы можете использовать UITableView со статическими ячейками и сегмент из развлекательной ячейки в категорию.

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