Just My Life & My Work

幾乎沒有在用UITableViewController的我卡住了,真不曉得為何一定要用UITableViewController?因為它限制太大,其實可以由UIViewController所取代。因為table view固定整個畫面,要設定其frame就不太容易,想要加上客製view也真是難⋯⋯

table view controller add subview - before

因為是拿他人寫好的專案來改,他用storyboard做好一切會員有關的頁面,前後流程都已經確定,甚至此頁面的class是繼承他自己定義好的基礎class,所以我才不會想要大費周章從UITableViewController搬到UIViewController!

找了網路許多解法,儘管有人成功加入客製視圖,但是我運行到一半會crash(因為繼承基礎class有複雜的邏輯判斷),不想要花時間不怎麼相干的debug,所以我最後找到高層級的做法⋯⋯

/**
 Theme: UITableViewController add Subview
 IDE: Xcode 7
 Language: Objective C
 Date: 104/10/23
 Author: HappyMan
 Blog: https://cg2010studio.wordpress.com/
 */
- (void)viewDidLoad
{
    [[[UIApplication sharedApplication].delegate window] addSubview:actionButton];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [actionButton removeFromSuperview];

    [super viewWillDisappear:animated];
}

我紅色那個按鈕叫做actionButton,運行結果就是會固定在螢幕最下方,它不歸此頁面所管轄,所以離開此頁面要在viewWillDisappear中設定移除喔!

table view controller add subview - after

簡單替代方案解決!

參考:UITableviewController如何addsubviewUITableViewController怎麼樣添加一個固定的不能滾動的頂部和底部視圖?

Comments on: "[iOS] UITableViewController加上客製視圖" (6)

  1. 這方法我試過
    可是你這樣 actionButton 就不會隨著 view controller 左右滑動了 (Push animation)
    還是你有其他方法?

    • 我有用UIView animation這類method去做動畫,目前是設定:

      進入時alpha從0變為1
      離開時alpha從1變為0

      至於秒數可以自行決定恰當的時間。

      你的需求是客製化view跟著該畫面移動,那麼可以設定frame或center來做動畫。

      觸發的關鍵時機點為四個:

      viewWillAppear
      viewDidAppear
      viewWillDisappear
      viewDidDisappear

      試試看動畫效果。

      • 謝謝你的建議
        我之前也是設定 frame 來做到相似的特效
        只是感覺應該有更簡潔的做法

        UITableViewController 真的很多限制

        • 哈~其實我沒用過UITableViewController來刻畫面,因為UIViewController可以做到同樣的效果,而且更有彈性,所以一直以來都是使用後者!只是上一位開發者以為該畫面不會改變介面,所以就使用前者。

          很好奇你的名字,真的是李大仁?還是綽號?想必你已經擁有程又青了吧XD~

          所有女藝人中我最喜歡林依晨了~ 😀

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲