2017-08-27 4 views
0
@property NSArray* restaurants; 

@end 

@implementation RestaurantsTableViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [self requestRestaurants]; 
} 

- (void)requestRestaurants { 
    NSString *urlString = @"https://s3-us-west-2.amazonaws.com/samwell.party/yasminucla/restaurants.json"; 
    NSURL *url = [NSURL URLWithString:urlString]; 

    NSData *restaurantData = [NSData dataWithContentsOfURL:url]; 

    self.restaurants = [NSJSONSerialization JSONObjectWithData:restaurantData 
                 options:NSJSONReadingAllowFragments 
                 error:nil]; 
    [self.tableView reloadData]; 
} 
#pragma mark - Table view data source 

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

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 

    NSInteger index = indexPath.row; // Get the row that we're at 
    NSString* restaurant = self.restaurants[index]; // Get the name of the restaurant for the row from the array 
    cell.textLabel.text = restaurant; // Set the cell text to be the name of the restaurant 

    return cell; 
} 

@end 

私は、ストーリーボード内のTabViewControllerに埋め込まれたUITableView Controllerを持っており、セルをプログラムでテーブルビューに追加しました。セルには、インターネットから.jsonファイルからダウンロードされたオブジェクトがあります。クリックしたときにmapKitビューを個々のセルにプッシュしたいのですが、どのように行うかはわかりません。ストーリーボードでセルを個別に接続することはできません。.jsonファイルから解析されたオブジェクトを持つUITableViewCellからmapKitビューをプッシュするにはどうすればよいですか?

+0

を書くコードを追加した後、私ははっきりと理解していません。デリゲートメソッドdidselectRowAtIndexPathを使用しますか? –

答えて

0

didSelectRowAtIndexPathperformSegueWithIdentifierを使用する必要があります。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self performSegueWithIdentifier:@"yourSegue" sender:self]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    UIViewController *mapViewController = segue.destinationViewController; 
    NSString* restaurant = self.restaurants[index]; 
    mapViewController.title = restaurant; 
} 

も参照してください:How to make a push segue when a UITableViewCell is selected

From View Controller to View Controlle!

0

あなたの応答

self.storyboard =  [ 
          "Mr. Chow", 
          "Panera Bread", 
          "Il Pastaio", 
          "Jinky's Cafe", 
          "Kazu Nori", 
          "Happy Days" 
           ] 

はJSONデータ

#import <UIKit/UIKit.h> 

@interface MapViewController : UIViewController 
@property(nonatomic,strong)NSString*PassVarible; 

@end 
を通過させるためのMapViewControllerは次にプロパティを作成された名前のクラスを追加します。 0

あなたの最初のクラス

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     MapViewController*vc=[self.storyboard instantiateViewControllerWithIdentifier:@"MapViewController"]; 
     vc.PassVarible=[self.restaurants objectAtIndex:indexPath.row]; 
     [self.navigationController pushViewController:vc animated:YES]; 
    } 
関連する問題