我想擁有多個視圖,每個視圖都包含2個表格視圖(每個視圖都有半個屏幕)。其中一個桌面視圖將由每個視圖共享。桌面瀏覽器會或多或少獨立運行。如何使用故事板設計更多共享桌面視圖的視圖
我想的兩個選項:
1),其中每當視圖進入取代共享的tableview重新加載獨立視圖。
2)由每個視圖(類似於在分割視圖控制器發生了什麼(雖然我不能使用SPLITVIEW作爲我想使用自適應佈局時,設備處於肖像模式)共享一個單一的tableview。
我有一種感覺,第二個方法是最好的,但我不能想辦法來設計它。 什麼是取得這一目標的最佳方式是什麼?
我試圖做所建議Andriy Gordiychuk(答案1),但我認爲我搞砸了......:
當我運行該應用程序時,它建立了成功只要我嘗試使用EXC_BAD_ACCESS錯誤進入共享視圖,就會崩潰。
這裏是SharedReusableTableViewDelegate:
class SharedReusableTableViewDelegate: UIViewController, UITableViewDelegate, UITableViewDataSource {
var databasePath = String()
var selectedVerse : Int = 1
func registerClass(UITableViewCell, forCellReuseIdentifier identifier: String){}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let row : Int = indexPath.row
var getVerse = DatabaseDB()
var verse = DatabaseVars()
(verse.book, verse.chapter, verse.verseNumber, verse.extra, verse.verseText) = getVerse.getVerseBy(row, database: databasePath as String)
let cell: AnyObject = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
cell.textLabel?!.text = "\(verse.chapter),\(verse.verseNumber) \(verse.verseText)"
return cell as! UITableViewCell
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let numberofCells = 200
return numberofCells
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedVerse = indexPath.row + 1
println("You selected cell #\(selectedVerse)!")
}
}
這裏是與表1的視圖控制器:
class Table1: UIViewController {
@IBOutlet weak var verseView: UITableView!
var databasePath = NSString()
var currentPath = NSString()
override func viewDidLoad() {
super.viewDidLoad()
let filemgr = NSFileManager.defaultManager()
let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let docsDir = dirPaths[0] as! String
databasePath = docsDir.stringByAppendingPathComponent("LuceDaLuce.db")
var fileCopyError : NSError? = NSError()
currentPath = NSBundle.mainBundle().pathForResource("tmp", ofType: "db")!
println("currentPath: \(currentPath)")
if !filemgr.fileExistsAtPath(databasePath as String) {
if filemgr.copyItemAtPath(currentPath as String, toPath: databasePath as String, error: &fileCopyError) {
println("Copy successful")
} else {
println("Copy failed with error: \(fileCopyError!.localizedDescription)")
}
} else {println("The database is already there")}
let delegate = SharedReusableTableViewDelegate()
delegate.databasePath = databasePath as String
verseView.delegate = delegate
verseView.dataSource = delegate
}
}
我加載的單元格的內容從SQLite數據庫(我已經測試過)。
有什麼建議嗎?
謝謝,
小號
是否有一個特別的原因,你希望tableview在其他視圖而不是僅僅在他們旁邊? – dudeman
視圖中的每個tableview將顯示不同的內容。來自一個tableview的內容將被用於回叫另一個的內容。每個視圖中的每個tableview都必須始終顯示。 – silvoc
這聽起來像你想要在相同的viewController裏面的tableviews,但不一定是相同的視圖。長久以來,將控制器的功能與您的觀點分開(以及您的模型就此而言)非常有用。 – dudeman