2015-08-20 65 views
3

的導航欄我發現,如果我在一個UINavigationControllerUIViewController,是這樣的:斯威夫特:不能添加按鈕ABPersonViewController

let vc = UIViewController() 
let nav = UINavigationController() 
nav.viewControllers = [vc] 
self.presentViewController(nav, animated: true, completion: nil) 

添加一個按鈕,導航欄是一樣簡單: vc.navigationItem.leftBarButtonItem = ...

然而,如果視圖控制器是ABPersonViewController型的,是這樣的:

let person = ABPersonViewController() 
person.personViewDelegate = self 
person.displayedPerson = info 
let nav = UINavigationController() 
nav.viewControllers = [person] 
self.presentViewController(nav, animated: true, completion: nil) 

我不能添加一個按照相同的方式按下導航欄; person.navigationItem.leftBarButtonItem = ...,好像要做here,什麼都不做。

那麼,有沒有方法將一個按鈕添加到ABPersonViewController的導航欄?

回答

0

您不能在ABPersonViewController上添加按鈕。即使你能夠添加,它也會被蘋果拒絕。你可以做的就是製作一個像ABPersonViewController這樣的自定義視圖,然後改變你想要的內容。 (我個人認爲ABPersonViewController是好的,你不應該有一個與它共存的問題)。

+0

我很猶豫要做一個自定義視圖,由於'ABPersonViewController'不能被子類化,所以我必須完整地編寫它 - 我想找一個解決方法。 – Randoms

0

最好的辦法是爲您的ABPersonViewController創建一個視圖控制器文件,並通常在viewDidLoad中設置按鈕。

即:

self.navigationItem.leftBarButtonItem = menuButton

你可以通過添加導航項目的視圖,然後添加一個欄按鈕項目按鈕添加到酒吧非編程。

+0

我無法爲它創建一個文件,因爲我不能讓它的VC類繼承它 - 我只需創建它的一個實例並呈現它。 – Randoms