在故事板中推送视图

时间:2012-02-11 12:37:43

标签: ios ios5 storyboard

我正在尝试使用表视图和导航控制器。这是我在使用NIB文件时使用的代码。如果我使用NIB文件,这段代码可以正常工作,但我决定尝试使用storyboard -

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

if (_webViewController == nil) {
    self.webViewController = [[[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]] autorelease];
}
RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
_webViewController.entry = entry;
[self.navigationController pushViewController:_webViewController animated:YES];
}

我在故事板中创建了另一个场景,并在那里设置了所有内容。当用户单击此表视图中的单元格时,它们将被带到该场景。这就是我为代码所写的内容,但它不对,我无可救药地陷入困境:( -

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"articleView"]){
    UINavigationController *navigationController = segue.destinationViewController;
    WebViewController *controller = (WebViewController *)navigationController.topViewController;
    controller.webView = self;
 }

回答 - 答案2和3都是正确的

3 个答案:

答案 0 :(得分:2)

如果您的表视图已嵌入导航控制器中(从您的第一个代码片段开始),那么您的segue的目标视图控制器将是WebViewController,而不是导航控制器。

因此,您可以让prepareForSegue方法直接传递项目:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"articleView"])
    {
        WebViewController *controller = (WebViewController *)segue.destinationViewController;
        RSSEntry *entry = [_allEntries objectAtIndex:[self.tableView indexPathForSelectedRow].row];
        controller.entry = entry;
    }
}

答案 1 :(得分:2)

我在2天前遇到了一个非常类似的问题,用户在一行中选择了公开附件,想要调用一个segue。什么对我有用:

  1. 在storyboard中,从整个tableView控制器(不是单元格)创建segue“articleView”到下一个viewController。
  2. 将以下方法添加到tableViewController:
  3. - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {  
        [self performSegueWithIdentifier:@"articleView" sender:[self.tableView cellForRowAtIndexPath:indexPath]];
    }
    

    为了你,我还测试了tableView:didSelectRowAtIndexPath:它可以工作。

    享受,

    达明

答案 2 :(得分:1)

您可能会发现这个优秀的两部分教程很有帮助

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1