Я работаю над проектом, в котором есть требование для пользовательской панели навигации. Желаемый эффект - это визуализация стека представлений, содержащихся в навигационном контроллере.
Представьте, что для каждого вида, который вы перемещаете вперед, на панели навигации появляется новая кнопка для вида, который вы только что оставили, например,
Вид 1 >> Вид 2 >> Вид 3
Мне вполне удобно создавать настраиваемые компоненты iOS, которые можно изменять, но мне очень интересно узнать, как другие люди подойдут к этой задаче.
Экземпляр, который я запускаю в данный момент, является подпредставлением UIView, и при инициализации я создаю панель навигации, добавляя UIButton для записей, детализированных в массиве словарей, предоставляемых классом делегата.
В коде psudeo:
@protocol NavDelegate
- (void)UIButtonClicked;
@end
@protocol NavDataSource
- (NSMutableArray *)arrayOfDictionaries;
@end
@interface Navbar : UIView
<NavDelegate,NavDataSource>
{
//create and synthesize delegate and datasource objects
}
@end
@implementation NavBar
- (id)init
{
//override and instantiate necessary objects
}
- (void)layoutSubviews
{
//here I use the number of dictionaries in the delegate returned array to add UIButtons to
//a UIView adding control events for when the button is clicked
}
@end
Это работает, но я не могу удержаться от ощущения, что есть более элегантное решение.
Мне также было бы интересно услышать, если люди думают, что это практика, которой следует избегать. Я все время не хочу «изобретать велосипед», но заинтересованные стороны проекта считают, что это хороший элемент пользовательского интерфейса. Если мнение будет «избегать любой ценой», то я обязательно верну им аргумент.
Заранее спасибо, ребята