pushViewController или presentModalViewController для представления чего-либо на одном экране - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть приложение для iPad, которое извлекает информацию из RSS-канала, но вместо того, чтобы нажимать на представление информации на следующем экране, я хочу показать ее на том же экране (см. Изображение)

Когда яиспользуйте pushViewController НИЧЕГО не происходит.Когда я использую presentModalViewController , синий фон меняется на веб-просмотр.Но то, что я хочу, это когда я нажимаю на строку в ленте новостей, веб-представление справа получает веб-сайт.

Я проверил это, нажав на новый экран с веб-просмотром, и это работает, но я хочу все это на одном экране

Вот код (очевидно, я пробовал несколько разных вещей, и просто оставил его закомментированным):

- (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];

}

enter image description here

Пожалуйста, помогите (это спасеткотенок)

- ДОПОЛНЕНИЕ Если это поможет, вот код, который работает, перемещая из 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];

}

1 Ответ

1 голос
/ 05 февраля 2012

Ну, если вам нужно очень простое решение, вы можете имитировать, оставаясь в том же виде, просто не анимируя переход к вашему виду модального контроллера, т.е.[self presentModalViewController:_webViewController animated:NO];.Вам также придется отключить анимацию, когда вы закрываете UIWebView, т.е.[self dismissModalViewControllerAnimated:NO].

В качестве альтернативы, вы можете использовать как представление RSS-канала, так и UIWebView в одном представлении, и просто скрыть представление RSS-канала (и отобразить UIWebView), когда вы хотите представить веб-представление,и сделайте наоборот, когда вы хотите, чтобы RSS-канал был видимым.

Надеюсь, что это поможет (достаточно, чтобы спасти этого котенка).

РЕДАКТИРОВАТЬ: я должен отметить, что они не обязательно следуют рекомендованным Apple шаблонам дизайнаЯ просто предоставляю решения, которые решат вашу текущую проблему.Мне нужно больше информации, чтобы определить правильность вашего дизайна.

...