在Master Detail应用程序中,我想显示一个包含5个部分的TableView,标题为:

  1. 你的行动
  2. 他们的举动
  3. 赢得比赛
  4. 输掉的比赛
  5. 选项

所以我在Xcode 5.0.2中创建了一个空白的Master Detail应用程序,然后在它的MasterViewController中创建.m(UITableViewController)我正在try 实现以下方法:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    return _titles[section];
}

然而,My question是如何初始化NSArray_标题的?

我正在try MasterViewController.m:

#import "MasterViewController.h"
#import "DetailViewController.h"

static NSArray *_titles_1 = @[
    @"你的行动",
    @"他们的举动",
    @"赢得比赛",
    @"输掉的比赛",
    @"选项"
];

@interface MasterViewController () {
    NSMutableArray *_games;

    NSArray *_titles_2 = @[
                         @"你的行动",
                         @"他们的举动",
                         @"赢得比赛",
                         @"输掉的比赛",
                         @"选项"
    ];
}
@end

@implementation MasterViewController

- (void)awakeFromNib
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        self.clearsSelectionOnViewWillAppear = NO;
        self.preferredContentSize = CGSizeMake(320.0, 600.0);
    }
    [super awakeFromNib];
}

- (void)viewDidLoad
{
     ....
}

但上述两次try 都会导致语法错误:

在此处输入图像描述

UPDATE:

让我惊讶的是,对于这个简单的问题有很多建议,但作为一个iOS/Objective-C新手,我不确定哪种解决方案最合适.

dispatch_once-在多线程应用程序中执行一次不是一种运行时操作吗?这不是太过分了吗?我期待一个编译时解决方案来启动常量array...

viewDidLoad-当我的应用程序在后台和前台之间切换时,是否不需要一次又一次地启动我的常量数组?

我是否应该在awakeFromNib中设置NSArray(因为我所有的ViewController都使用stroyboard场景)?或者在initSomething中(正确的方法是initWithStyle吗?)

推荐答案

编写一个返回数组的类方法.

+ (NSArray *)titles
{
    static NSArray *_titles;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _titles = @[@"Your Move",
                    @"Their Move",
                    @"Won Games",
                    @"Lost Games",
                    @"Options"];
    });
    return _titles;
}

然后,您可以在任何需要的地方访问它,如:

NSArray *titles = [[self class] titles];

Objective-c相关问答推荐

在 Objective-C 中完成受保护属性的解决方法

通过指针算术访问数组值与 C 中的下标

UITableView 无限滚动

CABasicAnimation 无 HUGE_VALF 无限重复?

烦人的[Environment: Sandbox]提示

如何判断 Cocoa 和 Objective-C 中是否存在文件夹?

Apple 的 API 中的k前缀表示什么?

在 iPhone 应用程序中使用 RestKit 的最佳方式

具有高质量代码的开源 Objective-C 项目?

Objective-C 中的非正式协议?

iOS是静态框架还是动态框架?

iOS 11 large-title导航栏不折叠

对 NSTimer 目标的弱引用以防止保留循环

UICollectionView 自动调整高度

每个 ivar 都必须是一个属性吗?

获取临时目录中文件的文件路径和 URL

UIView: opaque vs. alpha vs. opacity

从视图中删除所有子图层

有没有办法在用户已经在 iOS 上拒绝相机访问权限后向他们询问?

Objective C 消息分发机制