0

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

我正在使用情节提要,并且有一些视图控制器。

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

我可能猜到了,因为我没有在 appdelegate.m 上初始化其余的 viewController

这是我为 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 上的其余视图控制器感到有些困惑。

请帮助我,并在此先感谢

4

1 回答 1

0

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

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

要将其应用于上面的示例,请将您的 application:didFinishLaunchingWithOptions: 方法更改回默认值:

- (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 协议来填充您的表格视图。(查看适用于 iOS 的 Table View Programming Guide以了解它是如何工作的)

于 2013-10-17T18:54:22.633 回答