2013-09-15 5 views
4

У меня есть класс, который содержит дочерний контроллер вида ABPersonViewController. До iOS7 я мог передавать сообщение setDisplayedPerson: несколько раз, обновляя или заменяя отображаемую информацию. Однако с iOS7, когда viewDidLoad срабатывает для контроллера детского вида ABPersonViewController, любые последующие вызовы setDisplayedPerson:, по-видимому, игнорируются.Перезагрузка/изменение отображаемого лица с помощью ABPersonViewController на iOS7

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

Существует открытая радар для этого: rdar: // 14682982

Кто-нибудь видел это?

Edit: Проблема была решена с iOS8 бета 1.

+1

Я не играл с ABPersonViewController в то время, но iOS 7 по-прежнему ошибочно IMO, поэтому это может стоить как ошибка с Apple. –

+0

О, у меня есть отчет об ошибке, открывшийся с Apple по этой проблеме с бета-версии 4. Они еще не исправили его. –

+0

У меня еще 4 неразрешенных. –

ответ

0

Вопрос был разрешен в бета-версии iOS8.

0

Я имел дело с той же проблемой. Мое текущее решение состоит в том, чтобы иметь ABPersonViewController в качестве свойства (мне нужно это в нескольких местах) с задержкой создания экземпляра, и я установил его на ноль, прежде чем использовать его. Таким образом, у меня всегда есть новый.

+0

Этого недостаточно, если вы хотите заменить отображаемого человека после его отображения. То, что я закончил, - это иметь контроллер дочернего представления для каждого человека, если отображается предыдущий, я перехожу к представлениям с постепенным исчезновением. –

2

В качестве временного решения, если ABPersonViewController уже представлена, вы можете получить ABContactViewController через self.navigationController.topViewController.childViewControllers.firstObject и вызовите reloadData: перезагружать отображаемую информацию человек.

+0

Разве это не просто обновляется, если изменившийся отображаемый человек изменился, а не если вы полностью изменили отображаемого человека (разные 'ABRecordRef')? –

+0

Да, это поможет только с перезагрузкой, а не с изменением. Просто обнаружил, что 'ABContactViewController' имеет недокументированный селектор' updateWithNewContact: ', проверит его сейчас. – Entro

+0

Ну, он работает с некоторым недокументированным обходным способом: '[controller performSelector: NSSelectorFromString (@" updateWithNewContact: ") withObject: [[NSClassFromString (@" CNContact ") alloc] initWithRecord: newRecordRef]]'; но контактное изображение отсутствует. – Entro

Смежные вопросы