iphone UITableVIew (на основе навигации) - PullRequest
0 голосов
/ 01 мая 2011

Я работаю над навигационным приложением. Мой rootViewController содержит 3 ячейки -При первом нажатии нажимается UIViewController (ЭТО РАБОТАЕТ) Проблема в том, что 2-я и 3-я ячейки должны выдвигать UITableViewController

Приложение работает без ошибок и вообще не падает, но когда я перехожу к представлению таблицы, просматривается пустая таблица без элементов.

Проблема с этой частью кода ?? :

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

    UIViewController *detailViewController = [[UIViewController alloc] initWithNibName:@"Introduction" bundle:nil];
    detailViewController.title=@"Introduction";

    UITableViewController *myPictures = [[UITableViewController alloc] initWithNibName:@"Pictures" bundle:nil];
    myPictures.title=@"Pictures";

    UITableViewController *myImages = [[UITableViewController alloc] initWithNibName:@"ImagesViewController" bundle:nil];
    myImages.title=@"Images";

    // Pass the selected object to the new view controller.
    if (0 == indexPath.row)
    [self.navigationController pushViewController:detailViewController animated:YES];

    if (1== indexPath.row)
    [self.navigationController pushViewController:myPictures animated:YES];

    if (2== indexPath.row)
    [self.navigationController pushViewController:myImages animated:YES];

    [detailViewController release];
    [myPictures release];   
    [myImages release];

1 Ответ

0 голосов
/ 01 мая 2011

То, что вы делаете, очень неправильно (кроме вашей первоначальной проблемы).Почему вы создаете экземпляр каждого контроллера представления, а затем используете только тот, который основан на текущем «выборе ячеек»?Это замедлит работу вашего приложения в зависимости от того, сколько времени потребуется для загрузки каждого из этих отдельных представлений.Вам следует только создать экземпляр соответствующего контроллера представления внутри блока "if (indexPath.row == 2) {".

Кроме этого, в вашем подходе много неправильного.То, что вы делаете, никогда не сработает, поскольку создание экземпляра универсального UITableViewController (даже если вы указали свой собственный кончик), очевидно, покажет вам только пустое представление.У вас должен быть собственный класс, к которому привязывается перо в качестве делегата, который затем будет снабжать TableView данными.

Я полагаю, что когда вы создали эти файлы перьев (например, «Изображения»), xcode также предоставит вам файлы «PicturesViewController.h и PicturesViewController.m»? Если это так, вам нужно написать соответствующий код и убедиться, чтодля просмотра таблицы в файле пера «Pictures» для источника данных и делегата установлено значение «PicturesViewController». Затем, когда вы хотите показать это представление, сделайте это вместо:

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

    if (indexPath.row == 1) {
        ...
    } else if (indexPath.row == 2) {
     PicturesViewController *myPictures = [[PicturesViewController alloc] initWithNibName:@"Pictures" bundle:nil];

     [self.navigationController pushViewController:myPictures animated:YES];
     [myPictures release];
    }

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...