Re: [問題] tabBarController 沒反應
※ 引述《kiii210 (Johnny.T)》之銘言:
: 有點不知道怎麼下標題...這次真的遇到困難了...
: 簡單敘述一下問題
: 現有一個UITabBarController,是Initial View Controller,
: 跟它有Relationship的都會有tabBar.
: 原本的tabBar已經被我hidden,改用我自己的UIView來做.
: 假設我現在在FirstViewController,
: 我需要一個功能, 在原本的tabBar(自己的UIView)上面再蓋一層UIView過去.
: (沒辦法在FirstViewController當中addSubView, 因為不管怎樣都會被tabBar蓋掉)
: 但是問題來了, 在FirstViewController不管怎麼呼叫TabBarController中的method,
: method會有反應(NSLog), 但是執行的動作卻都沒反應
: ex:
: - (void) hideTabBar
: {
: NSLog(@"YES");
: self.bar.hidden = NO;
: }
: NSLog會有值出來, 代表method有執行到,
: 但是我的bar(UIView)卻無法hidden....
: 這是什麼問題勒...~"~
其實你可以把 subview 加到 UITabBar 裡, 就不會被蓋掉了
回到你的問題
你給的東西實在太少了根本有給等於沒給
不過發生這種事情的時候第一個就是要懷疑你的 self.bar 是不是 nil
: 另請問
: MyTabBarController *tab = [self.storyboard instantiateViewControllerWith
: Identifier:@"Bar"];
: [tab showsStatusBar];
: 跟
: MyTabBarController *tab = [[MyTabBarController alloc] init];
: [tab showsStatusBar];
: 這兩者都能執行該method, 但有何差異?建議用哪一種呢?
Storyboard 中的 objects 是處於被 archived 的狀態
當你呼叫 -instantiateViewControllerWithIdentifier: 時
Storyboard 會呼叫對應的 view controller 的 -initWithCoder: 初始子
這個初始子會連帶使得你在 Storyboard 為這個 controller 做的設計被重建
接著呼叫一連串的 callbacks, 包括 -awakeFromNib: 和 -viewDidLoad 等等
另一方面如果你用 alloc init 的話, 被呼叫的當然就是 -init
而且(重點)你「不會」得到這些 callbacks, 也不會得到 Storyboard 中的重建
建議用哪種?那就看你的需求啊
如果你的 view controller 是 self-contained 或是使用獨立的 NIB
那當然就是用 alloc init 比較好
而如果你需要(或希望)在 Storyboard 為這個 controller 進行設計
那就是 -instantiateViewControllerWithIdentifier: 比較好
甚至如果你設計的好, 還可以讓一個 view controller 同時適用這兩種策略
就可以更方便地重用這個 class
--
"問おう、貴方が私のマスターか?"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.81.146
推
02/14 01:04, , 1F
02/14 01:04, 1F
→
02/14 01:04, , 2F
02/14 01:04, 2F
→
02/14 01:04, , 3F
02/14 01:04, 3F
→
02/14 01:05, , 4F
02/14 01:05, 4F
→
02/14 01:05, , 5F
02/14 01:05, 5F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章