2014-06-09 2 views
0

Я создал метод tableview в методе viewDidLoad(), он отлично работает, но если я хочу получить доступ к моему табурету другим способом, я не могу этого сделать. Каков наилучший способ реализации UITableView. Переменные с закрытием, свойствами?Глобальные переменные против свойств для создания UITableView

let maintable:UITableView=UITableView() 
    maintable.frame=CGRectMake(0, 60, 320, 350) 
    maintable.showsVerticalScrollIndicator=false 
    maintable.delegate=self 
    maintable.datasource=self 
    self.view.adsubview(maintable) 

переменные с закрытием. Здесь maintable.delegate=self выдает ошибку

let mytable:UITableView={ 

    let maintable:UITableView=UITableView() 
    maintable.frame=CGRectMake(0, 60, 320, 350) 
    maintable.showsVerticalScrollIndicator=false 

    return maintable 

}() 
+0

какая ошибка вы получаете, когда вы устанавливаете 'maintable.delegate = self'? – Jiaaro

+0

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

+0

Тип 'mainCont ->() -> mainCony!' не соответствует протоколу UITableViewDelegate, но UITableViewDelegate и UITableDataSource реализован –

ответ

0

Вы должны объявить mainTableView как переменную экземпляра. В настоящее время его область ограничена вашим методом viewDidLoad, даже несмотря на то, что сам вид таблицы сохраняется (так как вы добавляете его в свой вид перед его исчезновением). Вы также захотите убедиться, что ваш класс соответствует протоколам UITableViewDataSource и UITableViewDelegate.

class MyViewController : ViewController { 
    var mainTable: UITableView = UITableView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     maintable.frame = CGRectMake(0, 60, 320, 350) 
     maintable.showsVerticalScrollIndicator = false 
     maintable.delegate = self 
     maintable.dataSource = self 
     self.view.addSubview(maintable) 
    } 
} 

extension MyViewController: UITableViewDelegate { 
    // lots of optional methods 
} 

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

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { 
     // return the cell 
    } 
} 
0
class MyViewController : ViewController , UITableViewDelegate , UITableViewDataSource 
{ 
    let mainTable: UITableView = UITableView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     maintable.frame = CGRectMake(0, 60, 320, 350) 
     maintable.showsVerticalScrollIndicator = false 
     maintable.delegate = self 
     maintable.dataSource = self 
     self.view.addSubview(maintable) 
    } 

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

    func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! { 
     var cell = UITableViewCell dequeuereusablecellWithIdentifier("cell") as UITableViewCell 

     cell.titlelabel.text = "Error Resolved" 

     return cell 
    } 

} 
+1

Не могли бы вы добавить объяснение того, как ваш код решает проблему? – Illidanek

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