2015-06-17 3 views
0

Я пытаюсь создать UIScrollView, которые состоят из 2-х или более UITableViews, и пользователь может пальцем слева направо, чтобы переключаться между UITableViewsIOS Swift Проблемы положить 2 или более UITableView в UIScrollView с источником данных и делегировать

Что я сделал до сих пор ставят 2 UITableViews в UIScrollView так:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    @IBOutlet var theScroll: UIScrollView! 
    @IBOutlet var tableView1: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tableView1 = UITableView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)) 
     self.tableView1.delegate = self 
     self.tableView1.dataSource = self 


     var foo = SomethingViewController() 

     var tableView2:UITableView = UITableView(frame: CGRectMake(self.view.frame.width, 0, self.view.frame.width, self.view.frame.height)) 
//  tableView2.delegate = foo 
//  tableView2.dataSource = foo 

     self.theScroll.addSubview(tableView1) 
     self.theScroll.addSubview(tableView2) 

     self.theScroll.contentSize = CGSizeMake(self.view.frame.width * 2, 0) 

    } 

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

     var cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell") 

     cell.textLabel?.text = "hello" 
     return cell 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 5 
    } 

} 

Я также реализован как вы можете заметили SomeViewController класс, который также реализует UITableViewDataSource и UITableViewDelegate с требуемой функцией 2, которая должна стрелять вверх UITableView (cellForRowAtIndexPath и numberOfRowsInSection)

однако, как только я попытался подключить второй TableView (tableView2) к реализованным SomethingViewController по раскомментируете

//  tableView2.delegate = foo 
//  tableView2.dataSource = foo 

моя программа вылетает с EXEC_BAD_ACCESS

что я делаю неправильно здесь? если есть другое, я открыт для других предложений, спасибо!

ответ

1

Прежде всего, вы должны, вероятно, сохранить ссылку на второй tableView где-то, а не просто поместить его в свой scrollview. Но это не причина вашего краха.

Во-вторых: причина вашей аварии. Вы не храните ссылку на 'foo', что означает, что он будет освобожден после завершения viewDidLoad.

Вы должны, вероятно, сделать что-то вроде этого:

@IBOutlet var foo: SomethingViewController! в верхней

, а затем использовать self.foo = SomethingViewController()

+0

Вот ваш зеленый тик! – jonprasetyo

+0

Большое спасибо! – jonprasetyo