0

大丈夫、

これに関するQ&Aをいくつか読みましたが、それを自分のコードに関連付ける必要があり、成功していません。誰かが私を助けてくれることを願っています:-)

NSMUtableArray が取り込まれた UITableViewController があります。

各エントリにリンクし、その URL を UIWebView を持つ DetailViewController に表示したいと思います。

ここで、ある VC から次の VC に文字列を渡すという考えがありましたが、うまくいかないようです。

これは、関連する最初の TVC にあるコードです。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
int currentindex = [indexPath row];
switch (currentindex) {
    case 0:
            _urlAddress = @"http://localhost:8888/thePalmsMenu/breakfast_menu.php";

        break;

    case 1:

            _urlAddress = @"http://localhost:8888/thePalmsMenu/lunch_menu.php";

        break;
    default:
        break;

}

webVC *sView = [[webVC alloc] init];
sView.urlAddress = _urlAddress;
[self.navigationController pushViewController:sView animated:YES];

}

そして、UIWebView を含む Second View Controller にこれがあります。

-(void)viewDidLoad
{

    _vc.urlAddress = _urlAddress;


    NSURL *url = [NSURL URLWithString:_urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
   [_webView loadRequest:requestObj];

}

現時点でも、コードはプッシュナビゲーションを行っていることを示していますが、それは機能していません-最初のビューを埋め込むと、そのビューを2回プッシュできないというエラーが表示されるため、それらは関連している必要があります.

これはそのエラーメッセージです:

2012-06-08 22:23:28.965 menu_test[68491:f803] ネストされたプッシュ アニメーションにより、ナビゲーション バーが破損する可能性がある. ナビゲーション バーのサブビュー ツリーが破損する場合があります。2012-06-08 22:23:29.449 menu_test[68491:f803] の外観遷移を開始/終了する呼び出しのバランスが取れていません。

これらは 2 つの質問のように見えますが、関連していることは確かです。

また、NSUserDefaults で遊んでみましたが、リンクを直接渡すのではなく、リンクを使用する前に設定する必要があるため、スムーズに動作しません。

どんな助けでも素晴らしいでしょう:-)

4

1 に答える 1

1

何が起こるかというと、ビュー コントローラーを実際に 2 回プッシュしているということです。1 回目はストーリーボードのプッシュ シーケンスから、2 回目はコードから行います。

解決策が 2 つあります。最も簡単なものを書き留めておきます (2 つ目も必要な場合はお問い合わせください)。

prepareForSegueメソッドからデータを渡す必要があります

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"TheIdentifierOfYourDetailView"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        int currentindex = [indexPath row];
        switch (currentindex) {
            case 0:
                _urlAddress = @"http://localhost:8888/thePalmsMenu/breakfast_menu.php";

                break;

            case 1:

                _urlAddress = @"http://localhost:8888/thePalmsMenu/lunch_menu.php";

                break;
            default:
                break;

        }

        [[segue destinationViewController] setUrlAddress:_urlAddress];
    }
}
于 2012-06-08T11:32:54.027 に答える