2017-01-23 1 views
1

Я следил за полезными комментариями ваших людей и в настоящее время получил это далеко: у меня есть один TableView с ячейкой заголовка. Сейчас проблема заключается в том, что я только способен отображать один набор данных и TableView не будет в настоящее время прокручиватьПроблемы с TableView внутри ScrollView

Вот мой код (Возможно, из-за только один набор отображается данные.):

ViewController:

struct TableData { 
 

 
     var section: String = "" 
 
     
 
     var data = Array<String>() 
 
     
 
     var dataS = Array<String>() 
 
     
 
     init(){} 
 

 
    } 
 

 
    var data = Array<TableData>() 
 
    var dataS = Array<TableData>() 
 

 
    class MyCustomCell: UITableViewCell { 
 

 
     @IBOutlet var label: UILabel! 
 
     
 
     @IBOutlet var labelS: UILabel! 
 
     
 
    } 
 

 
    class MyCustomHeader: UITableViewCell { 
 

 
     @IBOutlet var header: UILabel! 
 
     
 
    } 
 

 
    class TypeViewController: BaseViewController , UITableViewDelegate, UITableViewDataSource { 
 
     
 
     @IBOutlet var tableView: UITableView! 
 
     
 
     @IBOutlet var scrollView: UIScrollView! 
 

 
     public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
 
     
 
      return data[section].data.count 
 
     
 
     } 
 
     
 
     public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
 
     
 
      let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MyCustomCell 
 
      
 
      cell.label.text = data[indexPath.section].data[indexPath.row] 
 
      cell.labelS.text = dataS[indexPath.section].data[indexPath.row] 
 
      
 
      return cell 
 

 
      
 
     } 
 
     
 
     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
 
      
 
      let headerCell = tableView.dequeueReusableCell(withIdentifier: "Header") as! MyCustomHeader 
 
      
 
      headerCell.header.text = data[section].section 
 
      
 
      return headerCell 
 

 
     } 
 
     
 
     func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
 
      return 50.0 
 
     } 
 
     
 
     
 
     
 
     override func viewDidLoad() { 
 
      super.viewDidLoad() 
 
      addSlideMenuButton() 
 
      addItems() 
 
      
 
      print(data) 
 
      
 
     } 
 

 
     override func didReceiveMemoryWarning() { 
 
      super.didReceiveMemoryWarning() 
 
      // Dispose of any resources that can be recreated. 
 
     } 
 
     
 
func addItems() { 
 

 
     var new_elements:TableData 
 

 
     new_elements = TableData() 
 
     new_elements.section = "Stuff" 
 
     new_elements.data.append(obj41); 
 
     new_elements.data.append(obj42); 
 
     new_elements.data.append(obj43); 
 
     new_elements.data.append(obj44); 
 
     new_elements.data.append(obj45); 
 
     new_elements.data.append(obj46); 
 
     new_elements.data.append(obj47); 
 
     
 
     data.append(new_elements) 
 
     
 
     new_elements = TableData() 
 
     new_elements.section = "More Stuff" 
 
     new_elements.data.append(obj51); 
 
     new_elements.data.append(obj52); 
 
     new_elements.data.append(obj53); 
 
     new_elements.data.append(obj54); 
 
     new_elements.data.append(obj55); 
 
     new_elements.data.append(obj56); 
 
     new_elements.data.append(obj57); 
 
     
 
     data.append(new_elements) 
 
     
 
     new_elements = TableData() 
 
     new_elements.section = "Netzach - Eternity" 
 
     new_elements.data.append(obj61); 
 
     new_elements.data.append(obj62); 
 
     new_elements.data.append(obj63); 
 
     new_elements.data.append(obj64); 
 
     new_elements.data.append(obj65); 
 
     new_elements.data.append(obj66); 
 
     new_elements.data.append(obj67); 
 
     
 
     data.append(new_elements) 
 
     
 
     //Break 
 
     
 
     new_elements = TableData() 
 
     new_elements.data.append(objS0); 
 
     new_elements.data.append(objS1); 
 
     new_elements.data.append(objS2); 
 
     new_elements.data.append(objS3); 
 
     new_elements.data.append(objS4); 
 
     new_elements.data.append(objS5); 
 
     new_elements.data.append(objS6); 
 
     new_elements.data.append(objS7); 
 
     
 
     dataS.append(new_elements) 
 
     
 
     new_elements = TableData() 
 
     new_elements.data.append(objS11); 
 
     new_elements.data.append(objS12); 
 
     new_elements.data.append(objS13); 
 
     new_elements.data.append(objS14); 
 
     new_elements.data.append(objS15); 
 
     new_elements.data.append(objS16); 
 
     new_elements.data.append(objS17); 
 
     
 
     dataS.append(new_elements) 
 
     
 
     new_elements = TableData() 
 
     new_elements.data.append(objS21); 
 
     new_elements.data.append(objS22); 
 
     new_elements.data.append(objS23); 
 
     new_elements.data.append(objS24); 
 
     new_elements.data.append(objS25); 
 
     new_elements.data.append(objS26); 
 
     new_elements.data.append(objS27); 
 
     
 
     dataS.append(new_elements) 
 
}

Прикрепленный некоторые фотографии MainStoryboard:

enter image description here

enter image description here

enter image description here

+1

чем проблема? Что вы пытаетесь сделать? –

+0

https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/UIScrollView_pg/NestedScrollViews/NestedScrollViews.html Go через этот artical .... в том же направлении вложенный скроллинг поддерживается – Dhiru

+0

Изменить свой вопрос в надлежащее формат. и добавьте ваш прототип снимка сотового экрана. –

ответ

2

Имейте в виду ниже важные моменты в отношении к UITableView

  1. UITableView унаследовал имущество от UIScrollView т.е. UITableView также ниже как UIScrollView, так что вы не» t необходимо принять UIScrollView специально для прокрутки UITableView. Если вы это делаете, это будет странно.

  2. В cellForRow, вы создаете условия с парами tableView к выпускному typeView & typeView1 путем сравнения тега, который не является стандартным форматом. Потому что tableView.tag может быть изменен и дает неверный результат. Так что попробуйте использовать ниже формат

    if tableView == typeView { } else { } //tableView == typeView1

    Сравнить UITableView объекты с коляской tableView.

  3. cellForRow метод возвращает cell из if-else так что вам не нужно писать

return UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "Cell")

Если я отладки кода cellForRow метод, то ваш это выше линии никогда не выполняется.

Сначала попробуйте эти стандарты и устраните вашу ошибку, а затем разместите свой вопрос и проблему, с которой вы сталкиваетесь.

Надеюсь, что моя работа над вами поможет.

Редактировать

Ваш требуемая мощность будет походить на это показано ниже. Вам не нужно брать 2 UItableView и thse tableview в одном scrollview. Вы можете сделать то же самое с одним tableView.

enter image description here

Пройдите через эту tutorial

+0

для пункта 3: возможно, компилятор говорит, что 'if-else if' (а не' if-else') не может быть удовлетворен для всех возможностей, и поэтому ему нужно добавить оператор return, если 'tableView.tag' не является 'typeView.tag', а не' typeView1.tag' – muescha

+0

Нет брата в последнем из if-else всегда будет иначе, так что поставьте свое последнее условие там. –

+0

Правильно, если есть только «if-else». Но посмотрите код. Там в этой строке '} else, если tableView.tag == typeView1.tag {' is no 'if-else' - есть' if-else if' – muescha

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

  • Нет связанных вопросов^_^