使用Storyboard将NSString传递到另一个视图

时间:2012-06-08 10:26:22

标签: ios uitableview uiwebview storyboard segue

好的,

我已经阅读了一些Q& A's,但是我需要能够将它与我的代码联系起来并且我没有成功,我希望有人能够帮助我: - )

我有一个用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。

-(void)viewDidLoad
{

    _vc.urlAddress = _urlAddress;


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

}

现在也在代码显示我正在进行推送导航,但这不起作用 - 如果我嵌入第一个视图然后我得到一个错误,说我不能推动该视图两次,所以他们必须相关

这是错误消息:

  

2012-06-08 22:23:28.965 menu_test [68491:f803]嵌套推送动画可导致导航栏损坏   2012-06-08 22:23:29.447 menu_test [68491:f803]在意外状态下完成导航过渡。导航栏子视图树可能已损坏。   2012-06-08 22:23:29.449 menu_test [68491:f803]非平衡调用开始/结束外观转换。

现在即使这些似乎是2个问题,但它们肯定是相关的。

此外,我尝试过使用NSUserDefaults,但这并不顺利,因为在我可以使用之前需要设置链接,而不是直接传递它。

任何帮助都会很棒: - )

1 个答案:

答案 0 :(得分:1)

发生的事情是你真的推动了两次视图控制器,第一次来自故事板推送序列,第二次来自代码,

你有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];
    }
}