что я делаю не так при попытке открыть веб-представление и затем разрешить пользователю вернуться - PullRequest
0 голосов
/ 26 февраля 2011


мое приложение имеет tabBarController с 3 представлениями, и в одном из них я хочу открыть веб-браузер с возможностью возврата обратно в приложение.Для этого я использую UINavigationController.
В myAppDelegate.h я определил свойство UINavigationController * nav, а в myAppDelegate.m у меня есть @synthesize nav.
В классе, где находится функция webPopup, после нажатия кнопки myкод приходит к этой функции.

- (IBAction)showWeb:(id)sender {
myAppDelegate *app=[[UINavigationController alloc] initWIthRootViewController:self];
// because I want to return back to the same view
webController *web = [[webController alloc] initWithStyle:UITableViewStypeGrouped];
[app.nav pushViewController:web animated:YES];
app.nav.view.frame = CGRect(,0,320,430);
[self.view.window addSUbview:app.nav.view];
}

Веб-всплывающее окно возникает, но оно перемещается по вертикали, когда я нажимаю «кнопку назад», появляется и мое прежнее представление, которое также смещается по вертикали от того, что было раньше.После нескольких ходов назад и вперед вещь зависает.

Вопросы:
1. что может вызвать сдвиг?
2. как избежать, когда я иду «назад», чтобы увидеть заголовок (тестот кнопки «назад», я думаю, что это может вызвать сдвиг, когда я вернусь.
3. Как узнать, почему он зависает после нескольких попыток?

Спасибо. Виктор

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

Я не совсем понимаю, почему делегат приложения (или окно в этом отношении) вообще должен быть испорчен, чтобы делать то, что вы пытаетесь сделать. Похоже, вы должны просто использовать стандартные контроллеры Nav View и веб-представления.

Кроме того, вы выделяетесь без какого-либо управления памятью.

0 голосов
/ 26 февраля 2011

Линия:

myAppDelegate *app=[[UINavigationController alloc] initWIthRootViewController:self];

не имеет смысла для меня. Конечно, ваш компилятор предупреждает вас об этом? Как определяется myAppDelegate? Кстати, у классов должна быть заглавная буква спереди.

Также линия

[self.view.window addSUbview:app.nav.view];

очень подозрительно, потому что в UIWindow для вашего приложения должен быть только один дочерний UIView. Вы не должны просто добавлять больше взглядов, и ожидать, что все будет работать. Можно изменить дочерний UIView, удалив старый и добавив новый, но, похоже, вы этого не делаете. Наличие более одного дочернего UIView UIWindow очень быстро доставляет вам неприятности - например, изменение ориентации устройства может привести к поломке.

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