2016-03-30 13 views
3

Aşağıdaki örnek resim ile benzer bir görüntü elde etmek istiyorum: ilk ekranında seçili veya varsayılan bir kategori sunmak istiyorum ve tıklandığında, bir sonraki ekrana geçerek Diğer kategori seçenekleri. o Entertainment ve Project 01 farklı veri varlıkları (veri deposu) temsil ve farklı veri deposuna bağlı her UITableViewCell ile UITableView kullanıyor göründüğünü söylüyor bu örnekte,Swift 2.1 - Tek bir hücre için UITableView kullanma

. İlk önce analizimin şu ana kadar doğru olup olmadığını bilmek istiyorum.

Benim durumumda, sadece Entertainment bölümünü yapmalıyım ve sonraki ekranda, örnekte ikinci ekran gibi tüm kategori seçeneklerini göstermeliyim. Seçim yapıldıktan sonra, ilk ekran seçimi ikinci ekrandan yansıtmalıdır.

UITableView, bu tek alan (hücre) ve segue'i başka bir ViewController'a göstermek için doğru seçimi yapar mı?

Gördüğüm tüm demo uygulama örnekleri, bu amaçla UITableView kullanımını göstermiyor, bu yüzden benim durumumda en iyi seçeneğin ne olduğundan emin değilim. Tek seçenek Eğlence ise

Duruma göre

enter image description here

+0

Neden olmasın? Her şey sadece veri, hücrenin üzerine tıklayın, 2'ye getirin, sonra 2., kullanıcı sth'yi seçin, bu verileri içeren bir şey yapmak için temsilci olarak 1.ci çağrı yapın, 1. VC'deki her şeyi değiştirebilirsin, tablonuzda sorun olmaz sadece 1 hücrenin veya birçok hücrenin tutulması – Tj3n

+0

aşağıdaki delegenin nasıl çalıştığını ve tüm http://stackoverflow.com/questions/35242058/swift-pass-data-from-popover-controller-to-previous-controller/35242265#35242265 –

cevap

2

Evet UITableView iyi bir seçenektir. Sadece "kategori seç" sınıfında bir temsilci yöntemi oluşturun. Kategori sınıfında UITableView'ın didSelectRowAtIndexPath yönteminde temsilci çağırın. Daha sonra kategori sınıfının temsilcisi olarak Gider sınıfını atayın.

Temel olarak, eğlenceye tıkladıktan sonra bir ibre gerçekleştireceksiniz. Kullanıcı "Kategori kontrolörü seç" ile sunulacaktır. Kullanıcı tablo satırını seçtikten sonra. Temsil edilecek. Temsilciyi gider sınıfında uygulayın. Ve uygulamada sadece tabloyu yeni değerle yeniden yükleyin.

GÜNCELLEME:

Sizin kategori sınıfı benzer bir şey olacaktır seç:

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 
} 
} 

Yeniden Güncelleme: gideri kontrolörü olarak

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) 
} 
} 

sınıf bildirimi dışında aşağıdaki kodu ekleyin :

Ayrıca segue adını "CategorySegue" olarak adlandırın

+0

Teşekkür ederim. Ben biraz delegasyon yönteminin nasıl çağrılması ve atanması gerektiğini kaybettim. Kod yapısını paylaşır mısın? –

+0

yukarıdaki kodu lütfen –

+0

bu yapıya atıfta bulunup nasıl gittiğime dair sizi bilgilendiririm, teşekkür ederim! –

1

, sonra belki UITableView en iyi seçenek değildir. Yine de, bir UITableView'ı statik hücrelerle ve eğlence hücresinden kategoriye bir segue kullanabilirsiniz.

İlgili konular