Вероятно, вам действительно нужен ваш собственный контроллер представления, который либо наследует, либо содержит TTWebController. Создайте и сопоставьте с этим вместо необработанного TTWebController
, поместите кнопку, где хотите, и подключите сенсорный экран внутри к [self dismissModalViewControllerAnimated:YES];
. Это должно помочь.
EDIT:
Итак, теперь у вас есть пользовательское веб-представление типа myWebView
, которое, я предполагаю, наследует от TTWebController
. Это хорошо. Кроме того, вам не нужно инициализировать его новый экземпляр просто для того, чтобы получить класс, вы можете сделать это просто с помощью [myWebView class]
, потому что сообщение класса находится в классе, а не в экземпляре.
Однако, даже если вы решили создать новый экземпляр с использованием xib, я не думаю, что TTNavigator будет создавать экземпляр вашего контроллера таким же образом. Вместо этого я верю, что он запустится с этим конструктором (извлечено из TTWebController.m)
- (id)initWithNavigatorURL:(NSURL*)URL query:(NSDictionary*)query {
if (self = [self init]) {
NSURLRequest* request = [query objectForKey:@"request"];
if (request) {
[self openRequest:request];
} else {
[self openURL:URL];
}
}
return self;
}
Итак, в вашей дочерней реализации вы можете предоставить настроенную версию этой реализации, например:
- (id)initWithNavigatorURL:(NSURL*)URL query:(NSDictionary*)query {
if (self = [super initWithNavigatorURL:URL query:query]) {
// code that creates a button and puts it somewhere
}
return self;
}
Я не проверял это, мне было бы интересно посмотреть, что он на самом деле делает, если он этого не делает. Если вы предпочитаете xibs (как я, в отличие от Three20), вам нужно будет выполнить дополнительный шаг загрузки. У меня есть категория в моей служебной среде, которая помогает с этим:
NSBundle + LoadNibView.h
#import <Foundation/Foundation.h>
@interface NSBundle(LoadNibView)
+ (id) loadNibView:(NSString*)className;
@end
NSBundle + LoadNibView.m
#import "NSBundle+LoadNibView.h"
@implementation NSBundle(LoadNibView)
+ (id) loadNibView:(NSString*)className
{
return [[[NSBundle mainBundle] loadNibNamed:className owner:nil options:nil] objectAtIndex:0];
}
@end
Часть objectAtIndex
состоит в том, что все xib-ы содержат массив, даже если внутри есть только одно представление. Это просто вернет первый UIView в xib.