你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS7技巧 >> ios開發之Swift - 點擊狀態欄使tableView返回頂部(附:狀態欄點擊事件響應)

ios開發之Swift - 點擊狀態欄使tableView返回頂部(附:狀態欄點擊事件響應)

編輯:IOS7技巧
下面我們一起來看一篇關於ios開發之Swift - 點擊狀態欄使tableView返回頂部(附:狀態欄點擊事件響應)的例子,希望例子能夠幫助到各位. 1,當頁面上只有一個scrollView,點擊狀態欄scrollView會自動滾動到頂部

 

比如頁面上只有一個表格(UITableView),當點擊頂部狀態條後,表格會像QQ、微信聯系人列表那樣回到最上面。

 

這個是iOS系統默認就有的。

 


原文:Swift - 點擊狀態欄使tableView返回頂部(附:狀態欄點擊事件響應) 2,當頁面上有多個scrollView,點擊狀態欄時,視圖都不會滾動

這時我們需要把不需要滾動的 scrollView 的 scrollToTop 設為 false,只留下一個。
tableView?.scrollsToTop = false;

3,狀態欄點擊事件響應
有時我們想在狀態欄點擊的時候,除了讓視圖自動滾動外,還想執行一些其他操作。實現方式分為下面兩種情況:

(1)頁面上有scrollView時
如果頁面上有滾動視圖的話,直接在 scrollViewShouldScrollToTop() 事件響應中添加相關操作即可。
(注:如過不需要滾動視圖,方法內可以return false)

import UIKit
 
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
     
    var tableView:UITableView?
     
    override func loadView() {
        super.loadView()
    }
     
    override func viewDidLoad() {
        super.viewDidLoad()
                 
        //創建表視圖
        self.tableView = UITableView(frame: self.view.frame, style:UITableViewStyle.Plain)
        self.tableView!.delegate = self
        self.tableView!.dataSource = self
        //創建一個重用的單元格
        self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell")
        self.view.addSubview(self.tableView!)
    }
     
    func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {
        print("狀態欄點擊")
        //這裡添加需要執行的代碼邏輯....
         
        //不滾動表格視圖
        return false
    }
     
    //在本例中,只有一個分區
    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1;
    }
     
    //返回表格行數(也就是返回控件數)
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 100
    }
     
    //創建各單元顯示內容(創建參數indexPath指定的單元)
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
        -> UITableViewCell
    {
        //為了提供表格顯示性能,已創建完成的單元需重復使用
        let identify:String = "SwiftCell"
        //同一形式的單元格重復使用,在聲明時已注冊
        let cell = tableView.dequeueReusableCellWithIdentifier(identify,
            forIndexPath: indexPath) as UITableViewCell
        cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
        cell.textLabel?.text = "條目數據\(indexPath.row)"
        return cell
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

(2)頁面上沒有scrollView時
如果頁面上沒有滾動視圖,我們可以自己添加個隱藏的scrollView(高度為0),然後同樣在 scrollViewShouldScrollToTop() 中添加相應的操作。
(注:不要使用 hidden 或者 alpha=0 隱藏 scrollView,會無法調用 scrollViewShouldScrollToTop() 方法)

import UIKit
 
class ViewController: UIViewController, UIScrollViewDelegate{
     
    var tableView:UITableView?
     
    override func loadView() {
        super.loadView()
    }
     
    override func viewDidLoad() {
        super.viewDidLoad()
                 
        //創建一個隱藏的滾動視圖
        let scrollView = UIScrollView()
        scrollView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 0)
        scrollView.contentSize = CGSize(width: self.view.frame.width,height: 10)
        scrollView.contentOffset = CGPoint(x: 0,y: 10)
        scrollView.delegate = self
        self.view.addSubview(scrollView)
    }
     
    func scrollViewShouldScrollToTop(scrollView: UIScrollView) -> Bool {
        print("狀態欄點擊")
        //這裡添加需要執行的代碼邏輯....
         
        //不滾動視圖
        return false
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved