0

私はこの質問と同様の方法でiOS用のThree20を介してパラメーターを渡そうとしています:Three20とTTURLMapを使用したマルチパラメーターマッピング

しかし、私はその質問が対処していない問題に直面しています。私のマッピングは現在、

    [map from:@"sb://launcher/(initWithAccount:)" toModalViewController:[AccountOverviewViewController class] transition:0];

そこにたどり着くために、私は次のように呼んでいます。

    NSString *URL = [NSString stringWithFormat:@"sb://launcher/%@", [@"hey" stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
[[TTNavigator navigator] openURLAction:[[TTURLAction actionWithURLPath:URL] applyAnimated:YES]];

次に、AccountOverviewViewControllerで、

- (void)initWithAccount:(NSString *)name {
NSLog(name);

}

Console.appが「hey」を出力しているので、正しい値(私はそうです)を取得していることを確認します。AccountOverviewViewControllerが表示されないことを除いて、すべて正常に機能しています。内部のinitWithAccount:メソッドが呼び出されますが、画面に表示されることはありません。コントローラーにパラメーターを取得してそれ自体を表示させるためのステップがここにありませんか?

ありがとう。

4

2 に答える 2

0

あなたのinitWithAccount:(NSString*)name方法は間違っています。読み取り- (id)initWithAccount:(NSString*)name、自己を返す必要があります。TTNavigatorは、この戻り値(UIViewControllerの子孫)を使用して、ナビゲーションコントローラーにプッシュします。何も返さないので、アプリがクラッシュせず、何も表示されないのは幸運です。

CocoaTouchのinitで始まるメソッドに使用するパターンは次のとおりです。

- (id) initWithSomething:(id)something {
    if (self = [<designated initializer>]) {
        //Do something here.
    }
    return self;
}

最初の行は、サブクラス化するクラスによって異なります。指定された初期化子を常に呼び出す必要があります。したがって、UIViewControllerまたはTTViewControllerをサブクラス化するとします[self initWithNibName:nil bundle:nil]

于 2010-12-08T09:59:19.443 に答える
0

これは正常に機能します。

NSString *strTTURL = [NSString stringWithFormat:@"tt://PhotoDetail/%@",photoID];
TTURLAction *urlAction=[[[TTURLAction alloc] initWithURLPath:strTTURL] autorelease];
urlAction.animated=YES;
[[TTNavigator navigator]openURLAction:urlAction];
于 2011-11-28T13:40:45.960 に答える