1

アプリケーションに uinavigationViewController にプッシュされた多くのビューがあると仮定すると、各ビューの内容は異なります。

アプリの要素は複雑であるため、特定のビューまたは特定のビューの要素の小さなヘルプ ビューを表示したいと思います。「?」を想像してみてください。このボタンを押すと、画面の中央に新しいビューが表示され、YouTube のヘルプ ビデオが再生されるか、リモート サーバーから読み込まれたテキストの HTML が表示されます。

質問: そのようなことを行うための最善の戦略は何ですか? このコードをどこに配置すればよいですか (App Delegate?)

もしそうなら、他のビューからどのように呼び出すのですか (URL パラメータを使用)

-(void)showHelpView:(NSString *)theURLString{

    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 800, 600)];

    //webView.delegate= self;
    [webView  loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:theURLString]]];
    [window addSubview:webView];
    [window makeKeyAndVisible];
}
- (void)webViewDidStartLoad:(UIWebView *)webView
{

}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{

}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
}
4

1 に答える 1

0

私は疑似モーダルビューを使用したいと思います。毎回ビューを作成し、現在のウィンドウの上に追加するようにします。前回のアプリで OAuth 2.0 認証ポップアップにこのアプローチを使用しました。

基本的に、カスタム UIViewController サブクラスを作成し、次のようなカスタム初期化子を提供します。

// - (id) initWithURL: (URL*)url {
// ...
// self.url = url;
// ...
// return self;

PseudoModalViewController* pmvc = [[PseudoModalViewController alloc] initWithURL:@"http://www.google.com/"];

ビューを作成したら、現在のウィンドウの上に追加します。

UIWindow* window = [[UIApplication sharedApplication] keyWindow];
if(!window)
{
    window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];
}
[window addSubview:pmvc.view];

たとえば、viewDidLoad では、イニシャライザで取得した URL をロードします。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.webView loadRequest:[NSURLRequest requestWithURL:url]];
}

そのために、Interface Builder で UI を設計することもできます。最後に、全画面の透明な背景ビューを追加して、以下のすべてのビューが無効になるようにすることをお勧めします。

ああ、ほとんど忘れていましたが、単純な[self.view removeFromSuperview]. そのビューに正しいメモリ管理を提供することを忘れないでください (つまり、時間内に解放するなど)。

于 2012-09-10T13:15:59.237 に答える