2010-10-26 106 views
0

下得出的情境:ABPersonViewController的navgation酒吧

我對與它自己的參考他們的記錄ID一起維護聯繫人列表的應用工作。

當用戶需要更改與應用程序中的特定聯繫人相關聯的號碼時,我試圖顯示ABPersonViewController,以便用戶可以從AB中的聯繫人中選擇新號碼。

問題: 的問題是,當打開ABPersonViewController開始從屏幕頂部一路,如果它不知道,有一個在頂部導航欄。

因此,ABPersonViewController屏幕的頂部部分(人物圖像的頂部和名稱的頂部)位於導航欄的下方。

理想我希望它看起來像這樣,但不是在編輯模式:http://developer.apple.com/library/ios/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Art/person_view.jpg

另外我想補充一個「取消」按鈕,導航欄的右上角部分。嘗試添加,作爲酒吧按鈕也無法正常工作。

代碼: 這是怎麼了加入ABPersonViewController到navigationController:

ABPersonViewController *personViewController = [[ABPersonViewController alloc] init]; 
personViewController.personViewDelegate = self; 
personViewController.displayedPerson = person; 
[self.m_circleNavController pushViewController:personViewController animated:YES]; 
[personViewController release]; 

這裏的selfUIVIewController

m_circleNavController是UIVIewController所屬的UINavigationController。

我嘗試了這兩種顯示人物視圖的方式,但都表現相同的方式。

[self.m_circleNavController pushViewController:personViewController animated:YES]; 

[self.navigationController pushViewController:personViewController animated:YES]; 

我不太確定我做錯了什麼,或者做什麼最好的方法。 我嘗試了很多不同的方式來徒勞地展示它。

+0

要補充一點,所有視圖都是以編程方式創建/繪製的。項目中沒有xib文件。 – dagnytaggart 2010-10-26 00:43:27

回答

1

視圖控制器的行爲,好像它是從屏幕上邊緣約40像素開始。

我終於能夠以一種非常奇怪的方式修復它。在視圖控制器的init函數中,我添加了以下行:

self.view.bounds = CGRectMake(0,-43,320,440);

但仍然沒有線索爲什麼它發生這種方式。我即將接近截止日期尋找一個體面的解決方案。

0

你好,我一直有與新的iOS相同的問題。當這種情況發生在我的自定義視圖控制器我已經能夠加以糾正:

if (self.interfaceOrientation != UIInterfaceOrientationPortrait) { // UI is in landscape position 

     [self.tableView setContentInset:UIEdgeInsetsMake(32,0,0,0)]; 
    } else { // UI is in portrait position 

     [self.tableView setContentInset:UIEdgeInsetsMake(44,0,0,0)]; 
    } 

但使用ABPersonViewController時,我不太知道如何處理這個問題。 希望有人有一個想法...