質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

2回答

1914閲覧

plistを利用してTableViewを作成→セルをタップするとその詳細画面を表示

like_rank_uot

総合スコア7

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2015/05/28 11:01

編集2015/06/01 09:12

今お店情報アプリを作っています。
そこで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>

以上です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

もしかすると、

  • (void)setDetailItem:(id)newDetailItem {

}
これをDetailViewController.mにいれれば解決かもしれません。

投稿2015/06/02 12:34

askasashin

総合スコア79

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

like_rank_uot

2015/06/03 14:40

askasashinさん、ありがとうございます。 エラーは出ていません。そしてご教授いただいた(void)setDetailItem:(id)newDetailItem{}の挿入で画面遷移するようになりました!!本当にありがとうございます。 でも、選択したセルによって遷移先のDetailViewControllerで名前、住所、電話番号といった内容が引き継がれていないのか初期設定した「Detail」から変わりません。 これはDetailViewController.mでNSdictionary *dicから読み込む記述が足りないのでしょうか? よろしければご教授お願いいたします。
like_rank_uot

2015/06/05 11:05

askasashinさん 有難うございます!! いただいたサイトを元にdidserectrowとprepareforsegueの中身を思いっきり変更し、detailview.hにも受け取るNSStringをそれぞれ追加したところちゃんと選択したセルの情報が挿入されるようになりました!!
guest

0

エラーとか表示されてはいないですか?

投稿2015/06/02 11:05

askasashin

総合スコア79

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問