【问题标题】:Issue passing string using segue使用 segue 传递字符串
【发布时间】:2012-11-24 14:26:27
【问题描述】:

我有一个表视图控制器和另一个视图控制器。我想将数据从选定的单元格(从表格视图)传递到视图控制器并更新视图控制器中的标签。我通过以下方式做到这一点:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"SubRecipeConnectorSegue"])
{
     RecipeDetailViewController *destViewController = segue.destinationViewController;
     destViewController.recipeName = selectedRecipe;

 }
}

问题是,当我第一次选择一个单元格时,它没有出现在标签中;但是,当我选择任何第二个值时;我的第一个选择值显示在标签中。 类似地,在选择第3值时,在标签中显示第二值。 谁能告诉我出了什么问题?请帮忙。

【问题讨论】:

    标签: iphone objective-c ios cocoa uistoryboardsegue


    【解决方案1】:

    这样做的方法是手动触发segue。在 IB 中,将 segue 从一个 VC 绘制到另一个(而不是从表格单元格)。确保给它一个标识符。在tableView:didSelect中,设置选中的字符串并调用performSegueWithIdentifier:。

    您看到的问题是 segue prep 在 tableView 委托之前被调用,因此新的 VC 呈现先前的选择,这是第一次未定义的。

    【讨论】:

    • 我是新手。请您添加或提供示例代码。我应该在(NSString)和(id)中添加什么“[self performSegueWithIdentifier:)#> sender:]。如果你能给出截图如何使用 segue 连接,会很棒。注意:-我正在使用故事板。
    • 这里有一篇很棒的帖子:www.distractionsoftware.com/2012/09/17/more-control-over-segues/ 谢谢。
    【解决方案2】:

    您应该从 didSelectRowAtIndexPath 中的相应单元格中获取数据,然后按语法执行 segue。

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSString *recipeString = [dataArray objectAtIndex:indexPath.row];
        [self performSegueWithIdentifier:@"SubRecipeConnectorSegue" sender:recipeString];
    }
    

    然后将您的 prepareForSegue 方法更改为

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(NSString*)recipeString
    {
        if ([segue.identifier isEqualToString:@"SubRecipeConnectorSegue"])
        {
            RecipeDetailViewController *destViewController = segue.destinationViewController;
            destViewController.recipeName = recipeString;
    
        }
    }
    

    我不知道您是如何将数据存储在单元格中的,因此这可能与我编写的示例不同。如果您在实施方面需要帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多