-2

我有一个 iPad 应用程序,可以从 RSS 提要中提取信息,但我不想在下一个屏幕上推送信息,而是想在同一个屏幕上显示它(见图)

当我使用pushViewController时,什么都没有发生。当我使用presentModalViewController时,蓝色背景变为 webview。但是我想要的是当我从左侧的提要中单击一行时,右侧的 web 视图会获取该网站。

我通过使用 webview 推送到新屏幕来测试它,这确实有效,但我希望它都在同一个屏幕上

这是代码(显然我已经尝试了一些不同的东西,只是把它注释掉了):

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {    
    //EDITED to go to a webView instead of another table of info
    if (_webViewController == nil) {
        self.webViewController = [[[WebViewController alloc] 
                                    initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]] autorelease];
    }

    MWFeedItem *entry = [parsedItems objectAtIndex:indexPath.row];
    _webViewController.entry = entry;
    //[self.navigationController  pushViewController:_webViewController animated:YES];
    [self presentModalViewController:_webViewController animated:YES];

    //BELOW UNFINISHED SO EDITED OUT
    //self.webViewController._entry=[objectAtIndexPath:indexPath.row];

    // Deselect
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

}

不确定是否需要我的 ViewController 信息,但这是一个精简版(位置不同,但其他一切都相同)

- (void)viewDidLoad
{
    [super viewDidLoad];

    [scroll setScrollEnabled:YES];
    [scroll setContentSize:CGSizeMake(3840, self.view.frame.size.height)];

    ScheduleRVC *_scheduleRVC = [[ScheduleRVC alloc] initWithNibName:@"ScheduleRVC" bundle:nil];
    [_scheduleRVC.view setFrame:CGRectMake(408, 283, 340, 572)];
    [scroll addSubview:_scheduleRVC.view];

    MySchedule *_mySchedule = [[MySchedule alloc] initWithNibName:@"MySchedule" bundle:nil];
    [_mySchedule.view setFrame:CGRectMake(10, 57, 340, 800)];
    [scroll addSubview:_mySchedule.view];   

    WebViewController *_webViewController = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:nil];
    [_webViewController.view setFrame:CGRectMake(408, 57, 340, 184)];
    [scroll addSubview:_webViewController.view];

}

在此处输入图像描述

请帮忙(它会拯救一只小猫)

--ADDITION 如果有帮助,这里是从 RSS 推送到 WebView 的代码(但就像我说的,我希望它们一起出现在屏幕上,而 SplitView 不适用于我正在做的事情)

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

    // Show detail
    if (_webViewController == nil) {
        self.webViewController = [[[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]] autorelease];
    }

    MWFeedItem *entry = [parsedItems objectAtIndex:indexPath.row];
    _webViewController.entry = entry;
    [self.navigationController pushViewController:_webViewController animated:YES];


    // Deselect
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];

}
4

1 回答 1

1

好吧,如果您想要一个非常简单的解决方案,您可以通过简单地不对模态控制器视图的过渡进行动画处理来假装停留在同一个视图中,即。[self presentModalViewController:_webViewController animated:NO];. 当您关闭 UIWebView 时,您还必须禁用动画,即。[self dismissModalViewControllerAnimated:NO].

或者,您可以将 RSS Feed 视图和 UIWebView 放在同一个视图中,当您想要显示 Web 视图时,只需隐藏 RSS Feed 视图(并取消隐藏 UIWebView),并在需要 RSS Feed 时执行相反的操作可见的。

希望有帮助(足以拯救那只小猫)。

编辑:我应该提到这些不一定遵循Apple推荐的设计模式,我只是提供解决您当前问题的解决方案。我需要更多信息来确定您的设计是否正确。

于 2012-02-04T21:01:11.223 回答