[英]Edit button not displayed in UITabBarController's MoreNavigationController
[英]Customizing UITabBarController's moreNavigationController
我正在我的應用程序的UITabBarController中自定義“更多”視圖。
從我在文檔中看到的內容來看,很少有人支持自定義它。 UITabBarController只有一個名為'moreNavigationController'的只讀屬性,它指向UINavigationController。
這使我們至少可以自定義它的UINavigationBar。 自定義它在第一個視圖控制器中顯示的表視圖有點棘手。
關於SO和其他地方的其他問題,我已經看到所有的討論圍繞着搞亂moreNavigationController的內部結構(例如,觀察堆棧中的第一個視圖控制器是UITableViewController,交換它的數據控制器等等)。 )。 問題是所有這些方法都假設API中未記錄的代碼如何表現,這些假設很難面向未來。
我在這里看到的唯一選擇是滾動我自己的自定義“更多控制器”(可選地放棄編輯功能以保持實現相當簡單)並將其用作選項卡中的第五個視圖控制器。 當然必須注意將后續視圖控制器分配給自定義“更多控制器”而不是直接分配給UITabBarController(可能需要對UITabBarController進行子類化以強制執行此規則)。
你會選擇哪種方法? 你會建議其他什么解決方案?
我會選擇推出自己的自定義控制器有三個原因:
moreViewController
由UIKit
控制。 在外部,很難自定義一些視圖並直接控制它們。 moreViewController
會有不可預測的方法和圖層定義。 它不能是基本的UITableViewController
。 我認為定制具有委托的類更有效。
如果您自定義moreViewController
,則每次Apple發布新iOS時,您可能必須發布新版本的應用程序。 Apple的moreViewController
的開發人員可能會將整個類更改為其他類。 所以你的應用程序將停止響應。
我自己的班級,我自己的家。 我可以做任何我想做的事。
UIViewController *tbMore =
((UIViewController*)
[self.moreNavigationController.viewControllers objectAtIndex:0]);
int nRows = [((UITableView *)tbMore.view) numberOfRowsInSection:0];
for (int i = 0; i < nRows; i++)
{
UITableViewCell *c =
[((UITableView *)tbMore.view)
cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
// Do any additional customization here!
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.