使用故事板的多个视图控制器

时间:2013-10-17 17:47:21

标签: ios uitableview

我是创建iPhone应用程序的新手。我正在尝试创建一个简单的listapp。基本上它会有一堆列表类别,然后一旦点击类别,它将打开一个包含一堆列表的表,你可以在该列表上添加项目。

我正在使用故事板,我有一些视图控制器。

它的编译没有错误,我可以在第一个表视图控制器上添加一个类别但是当我点击类别并尝试添加一个项目时我得到这个错误 - 线程1:信号SIGABRT

我可能猜测是因为我没有在appdelegate.m上初始化其余的viewControllers

这是我为appDelegate.m

提供的代码
  #import "AppDelegate.h"
#import "ListViewController.h"
#import "List.h"


@implementation AppDelegate {
    NSMutableArray *items;
}

@synthesize window = _window;


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    items = [NSMutableArray arrayWithCapacity:20];
    List *item = [[List alloc] init];
    item.title = @"Grocery List";
    [items addObject:item];

    item = [[List alloc]init];
    item.title = @"Project List";
    [items addObject:item];

    item = [[List alloc] init];
    item.title = @"Events List";
    [items addObject:item];

    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    UINavigationController *navigationController = [[tabBarController viewControllers]objectAtIndex:0];
    ListViewController *listViewController = [[navigationController viewControllers]objectAtIndex:0];
    listViewController.lists = items;

    return YES;
}


@end

我实际上有点混淆我如何在appDelegate.m上初始化其余的viewcontrollers。

请帮助我,并提前致谢

1 个答案:

答案 0 :(得分:0)

通常,您不应在AppDelegate中初始化视图控制器。

在大多数情况下,您可以在viewDidLoad方法中初始化视图控制器。

要将此应用于上面的示例,请将您的应用程序:didFinishLaunchingWithOptions:method更改回默认值:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

然后转到ListViewController.m文件并将所有项目的初始化代码放在viewDidLoad中,以便它看起来像这样:

- (void)viewDidLoad
{
    [super viewDidLoad];

    items = [NSMutableArray arrayWithCapacity:20];
    List *item = [[List alloc] init];
    item.title = @"Grocery List";
    [items addObject:item];

    item = [[List alloc]init];
    item.title = @"Project List";
    [items addObject:item];

    item = [[List alloc] init];
    item.title = @"Events List";
    [items addObject:item];

    self.lists = items;

}

我假设你的ListViewController是一个UITableViewController子类(或者带有UITableView的UIViewController)。然后,您将实现UITableViewDelegate和UITableViewDataSoure协议来填充您的tableview。 (看看Table View Programming Guide for iOS以了解它是如何工作的)