ABPersonViewController рисуется под панелью навигации - PullRequest
0 голосов
/ 26 октября 2010

Контекст:

Я работаю над приложением, которое поддерживает список контактов вместе с их идентификаторами записей для справки.

Когда пользователю необходимо изменить номер, связанный с конкретным контактом в приложении, я пытаюсь отобразить 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];

self здесь UIVIewController.

m_circleNavController - это UINavigationController, к которому принадлежит UIVIewController.

Я попробовал эти 2 способа показать вид человека, но оба ведут себя одинаково.

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

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

Я не слишком уверен, что я делаю неправильно или как это лучше всего сделать. Я пробовал много разных способов отобразить это напрасно.

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Контроллер представления вел себя так, как будто он начинал примерно на 40 пикселей выше верхнего края экрана.

Наконец-то я смог исправить это очень странным образом. В функции инициализации viewcontroller я добавил следующую строку:

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

Но до сих пор нет понятия о том, почему так происходит. Я должен был приблизиться к крайнему сроку, чтобы найти достойное решение.

0 голосов
/ 26 ноября 2010

Здравствуйте, у меня та же проблема, что и в новой 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 я не совсем знаю, как решить эту проблему.Надеюсь, у кого-то есть идея ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...