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

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

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

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Q&A

解決済

1回答

559閲覧

UIPickerViewでピッカーを操作した時の動作を決めたい

Risney

総合スコア148

Objective-C

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

0グッド

0クリップ

投稿2018/07/05 11:53

編集2018/07/07 16:02

前提・実現したいこと

[前提]
現状ピッカーとラベルは表示されていて
ラベルの初期表示は「Disney Character」
になっています。

[実現したいこと]
①UIPickerViewを初回起動時は非表示にして、
ラベルをタッチするとピッカーが出現
②ピッカーの操作した結果がラベルに表示
③Doneボタンの実装
④Doneボタン、または背景をタップするとピッカーが非表示

全ての質問に質問に答えなくても良いのですが、
一つでもわかる方がいればご教授いただきたいです。

発生している問題・エラーメッセージ

①実装ファイルに初回判定のコードを書いたのですが、 エラーコードなくビルドするものの普通に初回から表示されていまいます。 ②ピッカーをヘッダーファイルにIBAction接続したくても、 なぜかOutlet接続の表示しか出ないのでそもそも接続できません。 接続できたらこちらのサイトを参考にして表示非表示を実行しようかと考えています。 http://xyk.hatenablog.com/entry/2014/09/09/200927 http://xyk.hatenablog.com/entry/2014/10/02/105147 https://morizyun.github.io/blog/uitextfield-datepicker-delegate-sender/index.html ③検索してもswiftはいくつかみつかったのですが objective-cのコードは見当たらなかったです UItextに閉じるボタンをつけるのに応用できる…? https://a244.hateblo.jp/entry/2016/02/16/004545 ④Viewを追加してかぶせるという方法をするのか、 はたまた非表示にすることはできるのでしょうか? ①ができればできるような気がしますが、、

該当のソースコード

objective

1 2「ViewController.h」 3#import <UIKit/UIKit.h> 4 5@interface ViewController : UIViewController <UIPickerViewDataSource , UIPickerViewDelegate> 6 7//ラベルを定義 8@property (weak, nonatomic) IBOutlet UILabel *character; 9//ピッカーを定義 10@property ( weak , nonatomic ) IBOutlet UIPickerView *picker ; 11//ピッカーを操作した時のイベントを定義 12 13@end 14 15 16「ViewController.m」 17 18#import "ViewController.h" 19 20@interface ViewController ( ) { 21 NSArray * _pickerData ; 22} 23@end 24 25@implementation ViewController 26 27- (void)viewDidLoad { 28 [super viewDidLoad]; 29 _pickerData = @ [ @"MickeyMouse" , @"MinnieMouse" , @"DonaldDuck" , @"DaisyDuck" , @"Goofy" , @"Pluto" , @"Duffy", @"ShellieMay"] ; 30 31 self . picker . dataSource = self ; 32 self . picker . delegate = self ; 33 34 _character.text = @"Disney Character"; 35} 36 37// データの列数 38- ( int ) numberOfComponentsInPickerView : ( UIPickerView *) pickerView{ 39 return 1 ; 40} 41 42// データの行数 43- ( int ) pickerView : ( UIPickerView * ) pickerView numberOfRowsInComponent : ( NSInteger ) component{ 44 return _pickerData . count ; 45} 46 47// 渡された行とコンポーネント(列)に対して返されるデータ 48- ( NSString * ) pickerView : ( UIPickerView * ) pickerView titleForRow : ( NSInteger ) row forComponent : ( NSInteger ) component{ 49 return _pickerData [ row ] ; 50} 51 52//初回起動判定 53- (BOOL)isFirstRun 54{ 55 NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 56 57 if ([userDefaults objectForKey:@"firstRunDate"]) { 58 // 日時が設定済みなら初回起動でない 59 return NO; 60 } 61 62 // 初回起動日時を設定 63 [userDefaults setObject:[NSDate date] forKey:@"firstRunDate"]; 64 65 // 保存 66 [userDefaults synchronize]; 67 68 // 初回起動 69 return YES; 70} 71 72- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 73 74 if ([self isFirstRun]) { 75 // 初回起動時の処理を書く 76 NSLog(@"初回起動"); 77 } 78 79 return YES; 80} 81 82 83@end 84

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

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

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

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

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

fuzzball

2018/07/06 00:20

質問項目が多すぎます。もっと細分化して下さい。ちなみに②以外はUIPickerViewに関係のない質問です。
Risney

2018/07/06 02:36

初回時起動時などが関係ないとなると、②も言ってしまえばラベルとAction接続の話なので関係ないというくくりになってしまうような気がします…。細分化するか迷ったのですが、関連した問題なので後で似たところでにつまずいた方が一度に関連した知識を得られると思い、また細分かするメリットもないと感じたのでまとめさせて頂いたのですが、細分化する場合のメリットをご教授頂けますでしょうか?
fuzzball

2018/07/06 02:50 編集

今のままだと全部の回答を用意できないと出来ないです。細分化されていれば一つ一つ(分かるものだけ)に回答できます。(質問者にとってはこれ以上無いメリットだと思いますが)
fuzzball

2018/07/06 02:43

ほとんどがUIPickerViewに関係のない質問なのに、タイトルが「UIPickerViewで〜」というのは不適切です。
Risney

2018/07/06 03:09

細分かに関しては確かにおっしゃる通りですね!タイトルに関してはすべて「UIPickerViewで〜」を抜いたら回答するコードが変わってくるかと思いますが、それは質問内容ではなく実現したい内容にかけば良いってことですかね。しかし自分的には以下のようになると言葉足らずな気もします「①初回起動時は非表示にして、 ラベルをタッチするとピッカーが出現 ③Doneボタンの実装 ④Doneボタン、または背景をタップするとピッカーが非表示」例えば①や④の場合UIPickerViewが〜が抜けてるとキーボードの場合もあったりしますので入れるべきかなとは思いました。
fuzzball

2018/07/06 03:49

①や④はView一般の話です。仮に、UIViewでうまくいくけどUIPickerViewでうまくいかないのであれば、UIPickerViewと書く必要はあります。
fuzzball

2018/07/06 03:52

Doneボタンにしても、どこに表示するのか?pickerにくっつけるのか?「swiftはいくつかみつかった」のであれば、そのURLをなぜ書かないのか?など、ツッコミどころ満載です。
fuzzball

2018/07/06 03:54

今、Objective-Cを使うのであれば、Swift→Objective-Cの変換くらいは出来ないといけません。(ほとんどの場合、メソッド名が少し違うだけなので、それほど難しくないです)
Risney

2018/07/07 09:47 編集

書き方の件で全部の回答ができない人の為に細分化するというのはわかりました。以後そうします!しかし関連する問題を後から見た人が解決しやすいというメリットについてどう思いますか?Doneは希望の箇所に表示できるかとか最初非表示なのにくっつけない事も可能ということを理解していませんでした。「SwiftのURLを載せたらそこから変換していただける」という考えがなかったので載せませんでした。同時進行で勉強していったほうが間違いないとは思うのですが、その時間がないのでObj-cを集中的にやっています。色々とアドバイスありがとうございます!!それと勘違いされてるようですが最初から丸投げしているわけではなく自分で調べた上でつまずいているので質問しています。
guest

回答1

0

自己解決

自己解決たので、
質問は閉じます。

投稿2018/07/18 12:43

Risney

総合スコア148

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問