Путь слайд-меню TTNavigator - PullRequest
       28

Путь слайд-меню TTNavigator

2 голосов
/ 06 марта 2012

Я использую Three20 в приложении, и я хотел бы использовать меню такого типа, которые используются в Path и Facebook:

path app slide menu

Мое приложение очень интенсивно использует схему URL TTNavigator, и кажется, что TTNavigator похоже на эксклюзивное управление окном. Поэтому у меня нет двух контроллеров представления.

Можно ли как-нибудь добавить TTNavigator к контроллеру представления и создать свое меню на другом?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2012

Вы можете иметь Path-подобный скользящий левый контроллер вида, используя превосходную реализацию ViewDeck Тома Адрианссена:

ViewDeck на GitHub

В вашем приложении при настройке navigator.window не пропускайте окно. Передайте UIView пользовательского UIViewController (тот, который вы установите в качестве «центрального» контроллера представления в ViewDeck:

navigator.window=(UIWindow*)myCentralViewController.view;

это заставит TTNavigator из 320 думать, что он успешно захватил ваше окно, хотя на самом деле это просто вид. Обратите внимание, однако, что вам может понадобиться создать подкласс этого представления и реализовать пустые методы UIWindow, такие как:

- (void)makeKeyAndVisible{}

.. потому что TTNavigator из Three20 все еще думает , что это ваше главное окно UIWindow и ожидает, что ваш объект будет реагировать на обычные селекторы UIWindow.

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

Вам может понадобиться установить отрицательный y на фрейме «поддельного окна», чтобы компенсировать статусную строку. e.g.:

[[MYFakeWindow alloc] initWithFrame:CGRectMake(0, -20, 320, 480)];

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

0 голосов
/ 08 марта 2012

хорошо, я нашел решение:

SMMenu * smmenu = [[SMMenu alloc] init];
[self.window addSubview: smmenu.view];
[self.window addSubview: navigator.window];
[self.window makeKeyAndVisible];

нужно только переместиться влево navigator.window при нажатии кнопки, подобной этой: [navigator.window setLeft:250], и она покажет вид назадняя часть, и все навигатор будет работать при виде спереди.

Хорошо.К сожалению, теперь я потерял представление клавиатуры ..:)

...