Как создать UINavigationItem.TitleView на основе файла пера? - PullRequest
1 голос
/ 27 ноября 2011

У меня есть последовательность экранов с UINavigationController.На одном из экранов я хочу заменить стандартный заголовок на собственный TitleView.Пользовательский вид будет создан с файлом пера и будет иметь изображение и несколько меток.

Создать ли UIViewController со связанным файлом пера, загрузить перо и назначить свойство .view для TitleView?В основном, как мне использовать перо, где я могу расположить необходимые элементы, а затем назначить результирующее представление свойству TitleView?

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Рассмотрите возможность использования UINib - он был выставлен в iOS 4.0. Это двойной перфоманс, так как он кеширует перо для вас.

UINib *nib = [UINib nibWithNibName:@"TestView" bundle:nil];
UIView *myView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0]];

objectAtIndex ссылается на представления верхнего уровня в NIB - обычно это одно (индекс 0), но если их много, вам нужно предоставить индекс.

Когда у вас есть вид, вы можете назначить его навигатайту titleView

self.navigationItem.titleView = myView;
[myview release];

EDIT:

Если вам нужно получить доступ к отдельным элементам управления в NIB, поместите в них теги и получите к ним доступ через viewWithTag. Смотрите здесь:

http://useyourloaf.com/blog/2011/2/28/speeding-up-table-view-cell-loading-with-uinib.html

0 голосов
/ 27 ноября 2011

Создайте свой пользовательский вид в Интерфейсном Разработчике и загрузите его в вид (или вы можете создать IBOutlet iVar, чтобы указать вид). Затем просто установите titleView на свой пользовательский вид.

UIView * customTitleView = [[[NSBundle mainBundle] loadNibNamed:@"TitleView" owner:self options:nil] lastObject];
self.navigationItem.titleView = customTitleView;
[customTitleView release];
...