Statyczny NSArray łańcuchów - jak / gdzie zainicjować w kontrolerze widoku
W aplikacji Master-Detail chciałbym wyświetlić TableView z 5 sekcjami zatytułowanymi:
Twój ruchIch ruchWygrane gryZagubione gryOpcjeDlatego tworzę pustą aplikację Master-Detail w Xcode 5.0.2, a następnie w MasterViewController.m (który jest UITableViewController) próbuję zaimplementować metodę:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return _titles[section];
}
Moje pytanie jaki jest jednak sposób inicjowania napisów NSArray?
Próbuję w MasterViewController.m:
#import "MasterViewController.h"
#import "DetailViewController.h"
static NSArray *_titles_1 = @[
@"Your Move",
@"Their Move",
@"Won Games",
@"Lost Games",
@"Options"
];
@interface MasterViewController () {
NSMutableArray *_games;
NSArray *_titles_2 = @[
@"Your Move",
@"Their Move",
@"Won Games",
@"Lost Games",
@"Options"
];
}
@end
@implementation MasterViewController
- (void)awakeFromNib
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
self.clearsSelectionOnViewWillAppear = NO;
self.preferredContentSize = CGSizeMake(320.0, 600.0);
}
[super awakeFromNib];
}
- (void)viewDidLoad
{
....
}
ale obie powyższe próby dają mi błędy składniowe:
AKTUALIZACJA:
Ku mojemu zdziwieniu istnieje wiele sugestii dotyczących tego prostego pytania, ale jako nowicjusz iOS / Objective-C nie jestem pewien, które rozwiązanie jest najbardziej odpowiednie.
dispatch_once
- czy nie jest to operacja wykonawcza, aby wykonać coś raz w aplikacji wielowątkowej? Czy to nie przesada? Spodziewałem się rozwiązania kompilacyjnego do inicjowania tablicy const ...
viewDidLoad
- kiedy moja aplikacja zmienia się między tłem a pierwszym planem, czy nie jest konieczne niepotrzebne inicjowanie mojej stałej tablicy raz za razem?
Czy nie powinienem lepiej ustawićNSArray
wawakeFromNib
(odkąd używam scen stroyboardowych dla wszystkich moich ViewControllerów)? A może winitSomething
(jest właściwą metodąinitWithStyle
?)