2016-12-04 56 views
2

我想滾動到頂部,當我雙擊任何BarButtonItem。 我在stackoverflow上看到了很多答案,但他們都沒有爲我工作。 也許我使用它錯了?我在哪裏把代碼放在AppDelegateTableViewControllers我想特別添加這個功能?雙擊酒吧按鈕項滾動到頂部

無論如何,我使用Swift 2.3和Xcode 8,並希望得到一些幫助。

謝謝。

回答

0

您是否知道scrollsToTop?我認爲這是你需要的。從iOS版SDK說明在UIScrollView有關scrollsToTop屬性:

當用戶點擊狀態欄,觸摸下方的滾動視圖最接近的狀態欄會滾動到頂部,但只有當它的scrollsToTop財產是YES,其代表不會從shouldScrollViewScrollToTop返回NO,並且它不在頂部。 //在iPhone上,我們只有在有一個屏幕滾動視圖scrollsToTop == YES時才執行此手勢。如果發現多於一個,則不會滾動。

+0

是啊,我知道,此行中我看到了很多答案,但我總能得到它指向的好聽,你可能告訴我如何將其正確寫入,使其工作的錯誤? –

+0

'scrollsToTop'默認是true,但如果你有很多'UIScrollView'或它的子類,你需要爲所有需要設置'false'除了需要的視圖 –

+0

我唯一的'UIScrollView'是這樣的:'override func scrollViewWillBeginDragging scrollView:UIScrollView)self.searchController.searchBar.resignFirstResponder() self.searchController.searchBar.endEditing(true) }'所以我可以輕掃以關閉鍵盤時,我搜索... –

0

首先設置UITabBarControllerDelegate委託。委託可以通過Storyboard或通過UITabBarController的委託屬性代碼輕鬆設置。

myTabBar.delegate = myNewDelegate // Have to conform to UITabBarControllerDelegate protocol 

你甚至可以子類的UITabBarController和實施UITabBarControllerDelegate它,因此它可以爲自己成爲代表。

mySubclassedTabBar.delegate = mySubclassedTabBar 

當您有代表時,您可以嘗試此方法。

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool 
{ 
    guard let tabBarControllers = tabBarController.viewControllers 
    else 
    { 
     // TabBar have no configured controllers 
     return true 
    } 

    if let newIndex = tabBarControllers.indexOf(viewController) where newIndex == tabBarController.selectedIndex 
    { 
     // Index won't change so we can scroll 

     guard let tableViewController = viewController as? UITableViewController // Or any other condition 
     else 
     { 
      // We are not in UITableViewController 
      return true 
     } 

     tableViewController.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: .Top, animated: true) 
    } 

    return true 
} 
+0

我把所有的代碼放在TableViewController/ViewController中,我想特別添加這個功能嗎?或者在一個新的swift文件中,我將連接到我的tabBarViewController? –

+0

最簡單的方法是繼承UITabBarController(通常是新的swift文件),實現委託協議並在故事板更改tabBarController的類。然後,您可以輕鬆更改故事板或代碼中的委託屬性(即在初始化過程中)。 – Adamsor