今お店情報アプリを作っています。
そこでplistを利用し、テーブルビュー(Dynamic Prototype)からテーブルビュー(Static cell)へ画面遷移するようにしたいのですが、最初のテーブルビューのセルをタップすると落ちてしまいます。
どのようにすればうまく表示できるかご教授お願いします。
まずMasterViewControllerから
.hファイル
#import <UIKit/UIKit.h>
#import "DetailViewController.h"
@interface MasterViewController : UITableViewController
<UITableViewDataSource,UITableViewDelegate>
@end
.mファイル
#import "MasterViewController.h"
@interface MasterViewController ()
@property (strong, nonatomic) NSArray *soba;
@end
@implementation MasterViewController
-
(void)viewDidLoad {
[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.
self.soba=[NSArray arrayWithContentsOfURL:[[NSBundle mainBundle]URLForResource:@"sobaList" withExtension:@"plist"]];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
DetailViewController *vc=[DetailViewController new];
vc.dic=[_soba objectAtIndex:indexPath.row];
[self.navigationController pushViewController:vc animated:true];
}
#pragma mark - Segues
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
sobadayo *items=_soba[indexPath.row];
[[segue destinationViewController] setDetailItem:items];
}
}
#pragma mark - Table View
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return _soba.count ;
}
-
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *Cellidentifier=@"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Cellidentifier];if (cell==nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:Cellidentifier];}
NSDictionary *listDict=[_soba objectAtIndex:indexPath.row];
cell.imageView.image=[UIImage imageNamed:[listDict objectForKey:@"image"]];
cell.textLabel.text = [listDict objectForKey:@"name"];
cell.detailTextLabel.text=[listDict objectForKey:@"add"];return cell;
}
@end
次にDetailViewControllerです。
.hファイル
#import <UIKit/UIKit.h>
#import "sobadayo.h"
@interface DetailViewController : UITableViewController
@property (strong,nonatomic) sobadayo *sobadata;
@property NSDictionary *dic;
@property (strong, nonatomic) id detailItem;
@property (weak, nonatomic) IBOutlet UILabel *detailDescriptionLabel;
@property (weak, nonatomic) IBOutlet UILabel *pname;
@property (weak, nonatomic) IBOutlet UILabel *padd;
@property (weak, nonatomic) IBOutlet UILabel *ptel;
@end
そして.mファイル
#import "DetailViewController.h"
@interface DetailViewController ()
@end
@implementation DetailViewController
#pragma mark - Managing the detail item
-
(void)configureView {
// Update the user interface for the detail item.sobadayo *items=self.detailItem;
if (self.detailItem) {
self.pname.text = items.ppname;
self.padd.text=items.ppadd;
self.ptel.text=items.pptel;}
}
-
(void)viewDidLoad {
[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.
[self configureView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
*このDetailViewControllerの
pname,padd,ptel部分に選択されたセルのplist情報を表示させたいです。
表示とは別でNSObjectファイル
.hファイル
#import <Foundation/Foundation.h>
@interface sobadayo : NSObject
@property NSString *ppname;
@property NSString *ppadd;
@property NSString *pptel;
@property NSString *ppimage;
@end
.mファイル
#import "sobadayo.h"
@implementation sobadayo
@end
plistは
<plist version="1.0">
<array>
<dict>
<key>name</key>
<string>ちゅるげー</string>
<key>add</key>
<string>北中城村</string>
<key>tel</key>
<string>098-882-8475</string>
<key>img</key>
<string>/Users/user/Desktop/沖縄そば 店写真/s_IMG_9676.PNG</string>
</dict>
<dict>
<key>name</key>
<string>けんぱーのすばやー</string>
<key>add</key>
<string>那覇市</string>
<key>tel</key>
<string>098-882-8475</string>
<key>img</key>
<string>/Users/user/Desktop/沖縄そば 店写真/s_IMG_9677.PNG</string>
</dict>
<dict>
<key>name</key>
<string>なび家バークレーズコート内</string>
<key>add</key>
<string>浦添市</string>
<key>tel</key>
<string>098-882-8476</string>
<key>img</key>
<string>/Users/user/Desktop/沖縄そば 店写真/s_IMG_9679.PNG</string>
</dict>
<dict>
<key>name</key>
<string>歓会門</string>
<key>add</key>
<string>浦添市</string>
<key>tel</key>
<string>098-882-8477</string>
<key>img</key>
<string>/Users/user/Desktop/沖縄そば 店写真/s_IMG_9678.PNG</string>
</dict>
<dict>
<key>name</key>
<string>浜屋そば</string>
<key>add</key>
<string>北谷町</string>
<key>tel</key>
<string>098-882-8478</string>
<key>img</key>
<string>/Users/user/Desktop/沖縄そば 店写真/IMG_9680.PNG</string>
</dict>
<dict>
<key>name</key>
<string>高江洲そば</string>
<key>add</key>
<string>西原町</string>
<key>tel</key>
<string>098-882-8479</string>
<key>img</key>
<string>/Users/user/Desktop/沖縄そば 店写真/IMG_9677.PNG</string>
</dict>
<dict>
<key>name</key>
<string>門の家</string>
<key>add</key>
<string>西原町</string>
<key>tel</key>
<string>098-882-8480</string>
<key>img</key>
<string>/Users/user/Desktop/沖縄そば 店写真/IMG_9676.PNG</string>
</dict>
</array>
</plist>
以上です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/03 14:40
2015/06/04 11:58
2015/06/05 11:05