2012-10-09 4 views
4

У меня есть TableViewController:Ограничение прокрутки для UITableView

enter image description here

Как вы видите, у меня есть свой собственный бар в верхней части. UITable View - всего лишь static, и я добавляю представление вверху UITableView.

Дело в том, что когда я просматриваю TableView, он становится похожим на нижестоящее изображение, и я не хочу этого. есть ли какой-нибудь простой код, который я могу ограничить прокруткой для tableView?

enter image description here

ответ

19

Поскольку UITableView является подклассом UIScrollView, вы можете использовать этот метод UIScrollViewDelegate, чтобы запретить прокрутку над верхней границей.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView == self.tableView) { 
     if (scrollView.contentOffset.y < 0) { 
      scrollView.contentOffset = CGPointZero; 
     } 
    } 
} 
+0

Perfect. Ты прав. – Ali

0

Если я правильно понимаю, вы свой собственный бар настройки, как часть вашего Tableview. Поместите свой custom bar в отдельный вид не в виде таблицы и поместите свой табличный вид под панель пользователя, когда вы настраиваете свои представления. Вам необходимо создать свой настраиваемый контроллер представлений, который будет иметь вашу настраиваемую панель и ваш статический вид таблицы.

+0

Вы правильно поняли. Тогда я не могу создать статический вид таблицы в tableViewController. – Ali

+0

Вам нужно создать собственный контроллер вида, который будет содержать представление таблицы и пользовательскую панель. Если вы определили представление таблицы с некоторым предопределенным содержимым, вы можете ссылаться на него в раскадровке. – tiguero

+0

Я попробовал это в a.xib, и там у меня не было возможности установить содержимое TableView в static. Поэтому это означает, что мне нужно создать динамический вид таблицы. правильно? – Ali

0

Вам необходимо создать ваш объект контроллера вида как тип UIViewController, а не UITableViewController. Затем добавьте настраиваемую панель в качестве подзаголовка в self.view. Создайте отдельный файл UITableView и добавьте его под панелью. Это должно сделать простую прокрутку настраиваемой панели и таблицы.

Update:

Для того, чтобы сделать Tableview статическую вам нужно установить его в качестве

tableView.scrollEnabled = NO: 

Позвольте мне знать, если это работает для вас.

+0

Да, но тогда tableView не может быть статичным. правильно? Я попробовал его в файле .xib, и там у меня не было возможности установить «content» TableView в static. – Ali

+0

Я отредактировал свой ответ. Пожалуйста, дайте мне знать, если вы этого хотите. – iDev

4

Yo нужен будет установить отражающее свойство UITableView к NO

UITableView *tableView; 
    tableView.bounces = NO; 

Edit: Обратите внимание также можно снять с отскоком от интерфейса строителя слишком

Пожалуйста, проверьте этот ответ для получения более подробной информации Disable UITableView vertical bounces when scrolling

+0

Отлично, это то, что я ищу. +1 upvote. – Ali

+0

Есть ли возможность сделать прокрутку так, как только мы пойдем вниз? потому что лучше, когда мы прокручиваем сверху вниз, он работает нормально. – Ali

+0

другой возможный ответ - один из Mathhias Bunch, он должен покрыть waht вам нужно –

0

У меня была такая же проблема и спросили нашего UX-Designer, как это было бы лучше сделать. Он сказал, что как строгие решения (предотвращать подпрыгивание, так и допускать его как есть) являются плохими. Это лучше, чтобы позволить подпрыгивая, но только в течение некоторого пространства

Мое решение было:

override func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    if scrollView == self.tableView { 
     if scrollView.contentOffset.y < -64 { 
      scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: 0, y: -64), size: scrollView.frame.size), animated: false) 
      scrollView.scrollRectToVisible(CGRect(origin: CGPoint.zero, size: scrollView.frame.size), animated: true) 
     } 
    } 
} 

Где 64 было то, что «некоторое пространство» для меня. Код останавливает tableView на -64 сверху и выводит его с помощью анимации. Удачи!

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