【问题标题】:Passing a NSString to another view with Storyboard使用 Storyboard 将 NSString 传递给另一个视图
【发布时间】:2012-06-12 09:51:24
【问题描述】:

好的,

我已经阅读了一些关于此的问答,但我需要能够将其与我的代码相关联,但我没有成功,我希望有人能够帮助我:-)

我有一个用 NSMUtableArray 填充的 UITableViewController。

我想链接到每个条目,然后将该 URL 显示在 DetailViewController 中,其中包含 UIWebView。

现在我有了将字符串从一个 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,但这并不顺利,因为需要先设置链接才能使用它,而不是直接传递它。

任何帮助都会很棒:-)

【问题讨论】:

  • 在您的故事板文件中,您是否将下一个细节视图控制器的“推送”链接到单元格或视图控制器本身?
  • 从cell链接到VC

标签: ios uitableview uiwebview storyboard segue


【解决方案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];
    }
}

【讨论】:

  • 谢谢 - 我对这个答案非常满意:-) 我尝试使用这种方法,但不知道如何将它与链接结合起来:-) 超级感谢:-)跨度>
  • 不客气,其他答案会更长 :D 所以我选择使用这个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多