Добавление TableViewController в существующий проект - PullRequest
0 голосов
/ 10 июля 2011

У меня есть существующий TableViewController следующим образом

// TableViewController.h

@interface TableViewController : UITableViewController { NSArray *dataArray; }
@property (nonatomic, retain) NSArray *dataArray;

И navAppDelegate - если быть точным:

// navAppDelegate.h

#import <UIKit/UIKit.h>
@interface navwAppDelegate : NSObject 
<UIApplicationDelegate, UINavigationControllerDelegate> {
UIWindow *window;
IBOutlet UINavigationController *navigationController;}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UINavigationController *navigationController;


// navAppDelegate.m
#import "navAppDelegate.h"

@implementation navigationtableviewAppDelegate
@synthesize window, navigationController;

- (void)applicationDidFinishLaunching:(UIApplication *)application
{    
[window makeKeyAndVisible];
[window addSubview:[navigationController view]];
}

Теперь я просто добавил файлы в существующий проект, кроме Iпоместите содержимое (void) applicationDidFinishLaunching {} в (void) viewDidLoad {}, так как теперь это представление, а не окно (верно?).Это не работает, и я предполагаю, что мне нужно изменить все вызовы окон сверху на представление?Что я здесь делаю в корне неправильно?Я звоню с

// StartOffHere.m

- (void)LetsGoButtonTouched {
navAppDelegate *newview = [[navAppDelegate alloc] initWithNibName:nil bundle:nil]; // I get a SIGABRT here
[[self navigationController] pushViewController: newview animated: YES];
}

Ответы [ 2 ]

1 голос
/ 10 июля 2011

Спасибо, Бенджамин. Отлично. Но это работало не совсем так - через два тяжелых дня мне удалось его запустить. Для тех, кто заинтересован, вот что я сделал:

  1. Если вы хотите добавить существующий TableViewController с NavigationController, вам понадобятся только файлы TableViewController и DetailViewController. Забудьте AppDelegate.

  2. Сделайте дважды новый файл -> Подкласс и скопируйте существующий код в идентичные TableViewController .h / .m / .xib - и DetailViewController .h / .m / .xib соответственно.

  3. Когда вы выполняете вызов метода, вы должны интегрировать и TableViewController, и NavigationController - вот так:

    - (void)LetsGoButtonTouched {
    TableViewController *tvc = [[[TableViewController alloc] init] autorelease];
    UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:tvc]autorelease];
    [self presentModalViewController:navigationController animated:YES];
    

Кстати, этот вопрос подсказал мне: Добавление UINavigationBar в UITableViewController без UINavigationController

1 голос
/ 10 июля 2011
- (void)LetsGoButtonTouched {
TableViewController *tableViewController = [[TableViewController alloc] init];
[[self navigationController] pushViewController:tableViewController animated: YES];
}

Попробуйте это.Это то, что вы хотели, чтобы произошло?

Если так, то, что я сделал, создал новый экземпляр вашего контроллера табличного представления и выдвинул это.В своем исходном коде вы пытались выдвинуть делегата приложения, что невозможно сделать;делегат приложения не является контроллером представления.TableViewController, ваш подкласс UITableViewController, тем не менее, так что вы можете использовать это для pushViewController: метод - и представление таблицы появится на экране.

...