IOS Как изменить существующий интерфейс для использования нового контроллера навигации - PullRequest
2 голосов
/ 07 января 2011

Хорошо, у меня проблемы с этим.

Я запустил приложение с пользовательским классом UITableViewController с именем MainView.

В конструкторе интерфейсов я изменил представление так, чтобы было текстовое поле, кнопка сверху и UITableView. Подключил источник данных и делегировал классу MainView и запрограммировал во всем коде использование текстового поля в качестве поля поиска, кнопку в качестве триггера поиска, а затем запрограммировал соответствующие методы делегата для заполнения UITableView. Это отлично работает.

Теперь следующим шагом было использование

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
метод, чтобы иметь возможность показать веб-просмотр со ссылкой, связанной с выбранной строкой. Таким образом, читая, я вижу, что мне нужно добавить UINavigationController к миксу (чтобы получить панель инструментов и панель навигации и т. Д.).

Теперь я попробовал это: добавьте контроллер навигации из компоновщика интерфейса и подключитесь к приложению, а также к розетке


#import 

@interface ComparateurAppDelegate : NSObject  {
    UIWindow *window;
    UINavigationController *navigationController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

@end

затем в реализации

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {<br>
[window addSubview:navigationController.view];
    [window makeKeyAndVisible];
}  

запускается нормально, так же, как и раньше, и у меня нет верхней панели, которую я должен иметь. плюс, когда я пытаюсь выдвинуть новый взгляд, он ничего не делает.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    WebViewController *wvc = [[WebViewController alloc] initWithNibName:@"WebViewController.nib" bundle:nil];</p>

<pre><code>[self.navigationController pushViewController:wvc animated:YES];

[wvc release];
}

Я знаю, что код работает, потому что я делаю это. но ничего не происходит WebViewController.nib - это файл пера, который я создал (прямо сейчас пустой), чтобы я заполнил его UIwebview.

На данный момент я предполагаю, что иерархия представления не установлена ​​нормально.

Поэтому я попробовал несколько вещей, которые точно не помню, и получил панель инструментов в верхней части окна, которое у меня уже есть, но со всем содержимым, недоступным (например, если панель инструментов была модальным диалогом, и я не мог использовать нижнюю один, или как прозрачный вид, и вы могли видеть под первым окном, которое было сложено). Я также попытался программно создать контроллер UINavigation в appDelegate, например,


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    // Override point for customization after application launch.
    UIViewController *rootController = [[MainView alloc]init];
    navigationController = [[UINavigationController alloc]initWithRootViewController:rootController];
    [rootController release];
    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];

    return YES;
}

И все, что я получил, это пустой UITableView для интерфейса, а не MainView.nib (класс которого установлен как MainView).

TL; DR: Имейте приложение, которое работает, хочет добавить детальное представление, и должно измениться к UINavigationController, но, кажется, не может найти правильный способ сделать это.

спасибо заранее и извините за длинный пост.

1 Ответ

1 голос
/ 07 января 2011

Попробуйте изменить это:

UIViewController *rootController = [[MainView alloc]init];

На это:

UIViewController *rootController = [[MainView alloc]initWithNibName:@"MainView" bundle:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...