Xcode TableView~詳細へ遷移について

このQ&Aのポイント
  • Xcodeの初心者がTableviewのリストをタップした時に詳細ページに遷移する方法を教えてください。
  • 以下のサイトを参考にしましたが、詳細ページの情報が表示されません。
  • DetailViewControllerのコードを追加しましたが、うまく動作しません。どなたか詳しい方教えていただけませんか。
回答を見る
  • ベストアンサー

Xcode TableView~詳細へ遷移について

初めまして。 現在Xcodeにてアプリ開発中の初心者です。 現在、Tableviewのリストをタップしたら詳細なページへ遷移する、というものを作っております。 以下のサイトを参考にし、作成致しました。 http://www.raywenderlich.com/ja/34037/table-view%E3%81%ABsearch%E6%A9%9F%E8%83%BD%E3%82%92%E5%8A%A0%E3%81%88%E3%81%BE%E3%81%97%E3%82%87%E3%81%86 上記サイトで遷移するところまでは出来ましたものの、 詳細な情報をどう記載していいのかよくわからず、色々サイトなどを見てやってみたのですが実現出来ておりません。 こちらのyoutube動画を見ながら https://www.youtube.com/watch?v=lMVNoDEkrxk DetailViewController.hとDetailViewController.mを以下のように追加してみたのですが 駄目でした。 <DetailViewController.h> #import <UIKit/UIKit.h> @interface DetailViewController : UIViewController { IBOutlet UILabel *Built; IBOutlet UILabel *Height; IBOutlet UILabel *Type; IBOutlet UILabel *Visitation; } @property (strong, nonatomic) IBOutlet UILabel *candyArray; @property (strong, nonatomic) IBOutlet UILabel *filteredCandyArray; @property (strong, nonatomic) IBOutlet UIImageView *candySearchBar; @property (strong, nonatomic) NSArray *DetailModal; @end <DetailViewController.m> #import "DetailViewController.h" @interface DetailViewController () @end @implementation DetailViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. _candyArray.text = _DetailModal[0]; _filteredCandyArray.text = _DetailModal[1]; _candySearchBar.image = [UIImage imageNamed:_DetailModal[2]]; self.navigationItem.title = _DetailModal[0]; if ([_candyArray.text isEqualToString:@"chocolate bar"]) { Built.text = @"test1"; Height.text = @"test2"; Type.text = @"test3"; Visitation.text = @"test4"; } } @end どなたかご存知の方、お詳しい方教えて頂けませんでしょうか。 質問に慣れておらず、また知識が浅く質問方法や情報など不足しておりませんでしたら ご指摘頂けますと幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 以下のサイトを参考にし、作成致しました。 > http://www.raywenderlich.com/ja/34037/table-view%E3%81%ABsearch%E6%A9%9F%E8%83%BD%E3%82%92%E5%8A%A0%E3%81%88%E3%81%BE%E3%81%97%E3%82%87%E3%81%86 > 上記サイトで遷移するところまでは出来ましたものの、 > 詳細な情報をどう記載していいのかよくわからず、色々サイトなどを見てやってみたのですが実現出来ておりません。 そのページで解説しているのは、UITableViewとか画面遷移とかの 基礎が分かっている人向けにUISearchBarを使ったサーチ機能を テーブルに追加する方法を説明しているものです。 遷移先の詳細画面表示機能は最大限に省略されていて、 選択した項目名が詳細画面のタイトルラベルに 表示されるだけになっています。 一応、サーチ機能追加説明用のアプリとしては これで完結しています。 > こちらのyoutube動画を見ながら > https://www.youtube.com/watch?v=lMVNoDEkrxk > DetailViewController.hとDetailViewController.mを以下のように追加してみたのですが > 駄目でした。 別のアプリの詳細画面のコーディングを意味もわからず適当に持ってきても 動くわけがありません。それで何をどうしたいのかとか、何がわからないのか の説明もなく、漠然と教えてくれと言われても、回答のしようがありません。 質問に書かれたコーディングを見る限り、全くわけがわかってない 状態で闇雲にやっているように見えますので、テーブルビューと遷移先の 画面の作り方を説明している基礎的な解説書や解説サイトを初めから 参照して勉強することをお勧めします。 英語でいいなら上記のyoutubeの解説のPart1から始めてもよいと思います。 あとは、Appleが発行しているチュートリアルガイドで https://developer.apple.com/jp/devcenter/ios/library/documentation/SecondiOSAppTutorial.pdf にBirdWatchingアプリを作る日本語の解説があり、詳細画面の作成についても 詳しく解説されています。完成版のサンプルもダウンロードできます。 これが難しいようなら、市販の入門書を購入されることをお勧めします。

msk718
質問者

お礼

ご返答ありがとうございます。 とにかく1からちゃんと学んでみます。

関連するQ&A

  • IBOutlet が認識されない

    Xcode3.2.5 で久しぶりにiPhoneアプリ作成の再勉強をしていますが、 IBOutlet が Interface Builder で認識しません。 手順### 新規プロジェクトで Window-based Application を選択して HelloWorldプロジェクトを作成。 ↓ HelloWorldAppDelegate.h に以下のように記述 #import <UIKit/UIKit.h> @interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; IBOutlet UILabel *label; //←追加 } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet UILabel *label; //←追加 @end 保存して、MainWindow.xib をクリックし Interface Builder を起動しましたが、 Hello World App Delegate をみても IBOutlet の label が ちゃんと Inspector に表示されません。 以前、前のバージョンのXcodeで作成したものをみてみると ちゃんと反映されるのですが新バージョンのXcodeだと具合が違うようです。 ググってみると http://iphone-ipodtouch-development.blogspot.com/2010/10/inspector.html が一番この例に詳しいようですがうまくいきません。 この解決法の説明をよろしくお願い致します。

  • Obj-Cで生成元のViewへ文字列を表示させたい

    iOS SDK(Objective-C)を勉強中なのですが、あるView(TestViewController.view)から別のView(ButtonViewController.view)を表示し、表示したViewにあるボタンを押した時に、生成元のView(TestViewController.view)のラベル(test_label)に文字列を表示したいのですが、色々やってみたものの上手く行かず、どの用に実装するのが正しいのか行き詰まってしまいました。どなたか手助けよろしくお願いします。 //*** TestViewController.h #import <UIKit/UIKit.h> #import "ButtonViewController.h" @interface TestViewController : UIViewController { IBOutlet UILabel *test_label; ButtonViewController *buttonViewController; } - (IBAction) pushButton:(id)sender; @end //*** TestViewController.m #import "TestViewController.h" @implementation TestViewController - (void)viewDidLoad { [super viewDidLoad]; test_label.text = @"Push Button"; } //ButtonViewを表示 - (IBAction) pushButton:(id)sender { buttonViewController = [[ButtonViewController alloc] initWithNibName:@"ButtonView" bundle:nil]; [self.view addSubview:buttonViewController.view]; } - (void)dealloc { [buttonViewController release]; [super dealloc]; } @end //*** ButtonViewController.h #import <UIKit/UIKit.h> @interface ButtonViewController : UIViewController { } - (IBAction) pushButtonSub:(id)sender; @end //*** ButtonViewController.m #import "ButtonViewController.h" @implementation ButtonViewController - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction) pushButtonSub:(id)sender { // ??? ← このボタンを押したときにtest_labelへ表示させたい } - (void)dealloc { [super dealloc]; } @end

  • Obj-CでViewコントローラのラベルに表示する

    Objective-Cであるクラスから、特定のViewControllerのもつLabel要素へテキストを表示したく、色々試してみたのですが、うまく動作しませんでした。 詳しい方、ぜひアドバイスお願いします。 □やりたいこと クラス側から、ViewControllerの持つ要素を操作したい □テストで使用したコード test_buttonをクリックすると、lbl_mesへ文字列を表示する ----------------- ■classTest.h #import "helloViewController.h" ----------------- ■classTest.m #import "classTest.h" - (void) makeStr { helloViewController *hv = [[helloViewController alloc] init]; hv->lbl_mes.text = @"HELLO WORLD"; [hv release]; } ----------------- ■helloViewController.h #import "classTest.h" @interface helloViewController : UIViewController { @public IBOutlet UILabel* lbl_mes; } @property(nonatomic,retain) IBOutlet UILabel* lbl_mes; -(IBAction) test_button; ----------------- ■helloViewController.m #import "helloViewController.h" -(IBAction) test_button{ classTest *clst = [[classTest alloc] init]; [clst makeStr]; [clst release]; } よろしくお願いします。

  • objective-c 初心者です

    はじめまして。iphone アプリ開発を始めようと思い、まずは簡単なアプリからと人のまねをして時計アプリを書いております。http://www.slideshare.net/takuya0429/121216の43枚目のスライドを丸写しにしました。しかし、iPhoneシミュレーター(iphone 6.1)でシミュレーションしても真っ黒な画面が移されるだけで思うように機能しません。 なぜ機能しないかを考えられる範囲でご教授願いたい次第です。 環境はmacbook air 13inch にてXcode 4.6.3を使用しております。 以下に作成したコードを記載いたします。 // // ViewController.h // watch // // Created by motoyama kaoru on 2013/08/15. // Copyright (c) 2013年 motoyama kaoru. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UILabel *timeLabel; @end // // ViewController.m // watch // // Created by motoyama kaoru on 2013/08/15. // Copyright (c) 2013年 motoyama kaoru. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(update) userInfo:nil repeats:YES]; } -(void)update{ NSDate *now = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc] init]; [df setDateFormat:@"HH:mm:ss"]; self.timeLabel.text = [df stringFromDate:now]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end

  • Xcodeのクラスについてお聞きします。

    何らかのクラスをつくり、ViewControllerからクラスを生成して そのクラス(以下TestClass)のメソッドにアクセスします。 TestClassのメソッドから呼び出し元のViewControllerの変数若しくはメソッドに アクセスすることはできるのでしょうか? 例) @interface ViewController : UIViewController{ UIlabel *label; //TestClassから書き込みたい } @end @implementation ViewController -(void)viewDidLoad{ TestClass *class = [[TestClass alloc] init]; [class labelWrite];//クラス呼び出し } - (void)hoge{ //TestClassからここにアクセスしたい //処理 } @end @interface TestClass : NSObject @end @implementation TestClass - (void)labelWrite{ //ここからViewControllerのlabelに書き込みたい //もしくはViewControllerのhogeメソッドにアクセスしたい } @end

  • Objective-Cのエラーコードの意味

    タイトルの通りです。 エラー部分は最下部にあります。 ------------------------------------------------------------------------------------------------- // // ViewController.m // Kadai // // Created by on 2014/08/10. // Copyright (c) 2014年 saikoro. All rights reserved. // #import "ViewController.h" @interface ViewController () <UIAlertViewDelegate> @property (weak, nonatomic) IBOutlet UITextField *tfMyouji; @property (weak, nonatomic) IBOutlet UITextField *tfName; @property (weak, nonatomic) IBOutlet UILabel *Aisatsu; @end @implementation ViewController // 画面タッチ時 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // キーボード非表示 [self.tfMyouji resignFirstResponder]; [self.tfName resignFirstResponder]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } // [挨拶する]ボタン押下 - (IBAction)introduce:(id)sender { UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"確認" message:@"挨拶しますか?" delegate:self cancelButtonTitle:@"キャンセル" otherButtonTitles:@"はい", nil]; // 表示 [av show]; } // AlertViewボタン押下 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"再確認" message:@"本当に挨拶しますか?" delegate:nil cancelButtonTitle:@"やっぱりやめときます" otherButtonTitles:@"早く!", nil]; [av show]; } // AlertViewボタンさらに押下 + (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ // 入力された名前の保持 NSString *str = self.tfMyouji.text; ←ここでエラーが出ます。なぜか「tfMyouji」が                    予測で出てきません } @end ------------------------------------------------------------------------------------------------- どなたかエラーの理由をご教授頂けないでしょうか。 以上、何卒宜しくお願い致します。

  • objective-c 画面遷移について

    プログラミングに関して素人です。 UIViewControllerからPushコードを使って別のUIViewに画面遷移したいのですが 遷移先にTableViewを2つ並べております。 画面遷移する際のコードはどのように記述したらいいのでしょうか? 詳しいかたお力お貸しいただければと思います。 ViewController.m - (IBAction)NewsPage:(UIButton *)sender { //こちらの記述方法が不明 } TViewController.h // XibファイルとUIViewの紐づけ。 @property (weak, nonatomic) IBOutlet UITableView *leftTableView; @property (weak, nonatomic) IBOutlet UITableView *rightTableView; - (IBAction)TopButton:(UIButton *)sender; 根本的になにか違えばご指摘お願いします。

  • UITableViewの編集モードが実装できない

    Objective-Cを用いてiPhoneアプリのプログラミングを勉強しています。 http://konton.ninpou.jp/program/cocoa/userinterface/UITableView/UITableView2.html UITableViewで編集モードを実装したいと思い、こちらのサイトを参考にコードを記述したのですがsignal:SIGABRTが出てしまい、実行できません。 一応build succeedとは出るのですが、iOSシミュレータの最初の画面が表示される前にエラーが出てしまうという状況です。 以下にコードを晒します。 アドバイスお願いしますm(_ _)m ■ヘッダファイル #import <UIKit/UIKit.h> @interface ViewController : UITableViewController { NSMutableArray *stringArray; UITableView *myTableView; } @property (nonatomic, retain) IBOutlet UITableView *myTableView; @property (nonatomic, retain) NSMutableArray *stringArray; @end ■実装ファイル http://www.dotup.org/uploda/www.dotup.org5336157.txt コードが古いようで、ARCエラーが出ましたが、以下のサイトを参考に対策をしたところ、コード上のエラー表示は無くなりました。 http://d.hatena.ne.jp/mTsuruta/20111107/1320615543

  • objectiv-cで困っています。教えてください

    objectiv-cの勉強を始めたばかりです。ネットで調べながら進めているのですが、プロジェクト内のテキストファイルではなく、サーバにあるテキストファイルの内容を読み込み、NSLogに出力しようとしているのですが、うまくいきません。xxxxxxxxxxxの部分にテキストファイルのあるURLを入れています。 -----------------textloadViewController.h------------------------------ #import <UIKit/UIKit.h> @interface textloadViewController : UIViewController @end -----------------textloadViewController.m------------------------------ #import "textloadViewController.h" @interface textloadViewController () @end @implementation textloadViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. NSError *error = nil; NSString *filePath = [[NSBundle mainBundle] pathForResource:@"xxxxxxxxxxx" ofType:@"txt"]; NSString *string = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error]; NSLog(@"%@", string); } @end 外部のテキストファイルを読み込む方法を教えてください。よろしくお願いします。

  • Xcode4のエラー(IPhoneアプリ)

    はじめまして。 IPhoneのアプリ作成に挑戦しています。 Xcode4のバージョンは 4.5.1です。 【はじめてのXcode4プログラミング】という参考書でIPhoneのカメラアプリを作る章があり、写真ライブラリから選択した画像を表示できるとのことです。 しかし、XcodeでRun(実行)すると、ViewController.mの最後2行【UIImage *originalImage =[info objectForkey:UIImagePickerControllerOriginalImage];】が赤くなり、【’dismissModalViewControllerAnimated’is deprecated: first deprecated in iOS 6.0】というエラー表示がでます。 全体のコードは下記の通りです。 ネットで調べてみましたが、解決方法がわかりません。 先に進めず困っています。 どうか解決方法を教えてください。 よろしくお願い致します。 ●ViewController.h// // ViewController.h // CameraApp // #import @interface ViewController : UIViewController - (IBAction)pressCameraButton:(id)sender; @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end ●ViewController.m // // ViewController.m // CameraApp // #import “ViewController.h” @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)pressCameraButton:(id)sender { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentModalViewController:picker animated:YES]; } - (void)imagePickerController:(UIImagePickerController*)Picker didFinishPickingMediaWithInfo:(NSDictionary*)info { [self dismissModalViewControllerAnimated:YES]; UIImage *originalImage = [info objectForkey:UIImagePickerControllerOriginalImage]; self.imageView.image = originalImage; } @end