2

テーブルビューのセルを押すと新しいビューが表示されるようにしたい。しかし、テーブル ビューのセルは、作成した .plist ファイルから情報を取得するため、いくつかの問題があるようです。これが私のコードです。PS: これは Storyboard で作成しています。

ViewController.h:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate>

@property (copy, nonatomic) NSDictionary *firstTableView;
@property (copy, nonatomic) NSArray *firstTableViewKey;


@end

ViewController.m:

#import "ViewController.h"


static NSString *SectionsTableIdentifier = @"SectionsTableIdentifier";

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITableView *tableView = (id)[self.view viewWithTag:1];
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:SectionsTableIdentifier];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"firstTableView" ofType:@"plist"];

    self.firstTableView = [NSDictionary dictionaryWithContentsOfFile:path];

    self.firstTableViewKey = [[self.firstTableView allKeys] sortedArrayUsingSelector:@selector(compare:)];

    tableView.backgroundColor = [UIColor clearColor];
    tableView.opaque = NO;
    tableView.backgroundView = nil;

    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
#pragma mark -
#pragma mark Table View Data Source Methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return [self.firstTableViewKey count];

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    NSString *key = self.firstTableViewKey[section];
    NSArray *nameSection = self.firstTableView[key];
    return [nameSection count];

}

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SectionsTableIdentifier];

    NSString *key = self.firstTableViewKey[indexPath.section];
    NSArray *nameSection = self.firstTableView[key];

    cell.textLabel.text = nameSection[indexPath.row];
    return cell;

}

@end

助けてくれてありがとう!

4

1 に答える 1

0

ストーリーボードを使用してビューをモーダルにプッシュする場合は、次を使用できます。

UIStoryboard *storyboard       = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
NewViewController *VC   = [storyboard instantiateViewControllerWithIdentifier:@"A_STRING_ID FOR_YOUR_VC_IN_STORYBOARDS"];
    [self presentViewController:VC animated:NO completion:nil];

plist ファイルから文字列 (A_STRING_ID FOR_YOUR_VC_IN_STORYBOARDS) を入力できる場所、またはテキストを取得する場所

ストーリーボードを使用してナビゲーション スタックを介して移動する場合

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; 
NewViewController *VC = [storyboard instantiateViewControllerWithIdentifier:@"A_STRING_ID FOR_YOUR_VC_IN_STORYBOARDS"];
[self.navigationController pushViewController:VC animated:YES];
于 2013-03-20T14:20:53.783 に答える