2011-06-13 12 views
1

私はナビゲーションベースのiOSアプリケーションを持っています。私のRootViewControllerでは、ユーザーは1から18までの章を見ています。セルを選択すると、それはVersesViewControllerに移動し、1節から別のリストが表示されます。彼らが選んだ章によっては、異なる数の詩が見えます。UITableViewをどのようにカスタマイズすることができますか?

ユーザーがRootViewControllerビューでセルを選択すると、VersesViewControllerNSArrayの内容を変更したいと考えています。これどうやってするの?

#import "RootViewController.h" 

@implementation RootViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.title = @"Chapters"; 
    chapterList = [[NSMutableArray alloc] init]; 
    for (int i = 1; i<19; i++) 
    { 
     [chapterList addObject:[NSString stringWithFormat:@"Chapter %d", i]]; 
    } 

} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
} 

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [chapterList count]; 
} 

// Customize the appearance of table view cells. 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    cell.textLabel.text = [chapterList objectAtIndex:indexPath.row]; 

    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    VersesViewController *detailViewController = [[VersesViewController alloc] initWithNibName:@"VersesViewController" bundle:nil]; 

    if ([[chapterList objectAtIndex:indexPath.row] isEqual:@"Chapter 9"]) { 
    [detailViewController setNumberOfVerses:18]; 
} else { 
    [detailViewController setNumberOfVerses:72]; 
} 
    [self.navigationController pushViewController:detailViewController animated:YES]; 
    [detailViewController release]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    self.title = nil; 
} 

- (void)dealloc 
{ 
    [super dealloc]; 
    [chapterList release]; 
} 

@end 

私は非常に単純な答えが必要になりますので、私がobj-CでN00Bだということに注意してください:ここでは

RootViewControllerコードです。ありがとう。

答えて

2

データのためにより複雑なストレージが必要です。すべての章のデータを記述するための辞書の配列を作ることができます。

- (void)viewDidLoad 
{ 
    chapterList = [[NSMutableArray alloc] init]; 
    ... 
    chapterInfo = [NSDictionary dictionaryWithObjectsAndKeys:@"Chapter 9", @"title", [NSNumber numberWithInt:18], @"numberOfVerses", nil]; 
    [chapterList addObject:chapterInfo]; 
    chapterInfo = [NSDictionary dictionaryWithObjectsAndKeys:@"Chapter 10", @"title", [NSNumber numberWithInt:72], @"numberOfVerses", nil]; 
    [chapterList addObject:chapterInfo]; 
    ... 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    NSDictionary *chapterInfo = [chapterList objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [chapterInfo objectForKey:@"title"]; 

    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    VersesViewController *detailViewController = [[VersesViewController alloc] initWithNibName:@"VersesViewController" bundle:nil]; 

    NSDictionary *chapterInfo = [chapterList objectAtIndex:indexPath.row]; 
    [detailViewController setNumberOfVerses:[[chapterInfo objectForKey:@"numberOfVerses"] intValue]]; 
    [self.navigationController pushViewController:detailViewController animated:YES]; 
    [detailViewController release]; 
} 

最高のは、すべての章の説明をplistファイルを作成し、このようにそれをロードするために、次のようになります。私は、コードを追加した

NSString *path = [[NSBundle mainBundle] pathForResource:@"chapters" ofType:@"plist"]; 
NSArray *chaptersList = [[NSArray alloc] initWithContentsOfFile:path]; 
+0

本当に助けていただきありがとうございます。 – champak256

1

コンテンツをpList形式などの形式で保存する必要があります。それから、詩が押されたときにそれを検索します。最初にいくつかのコードを表示してください。

+0

。 – champak256

関連する問題