UIWebViewのConstrains制限の違和感

投稿者: Anonymous XcodeでViewの上にUIWebViewを置いています。 画面いっぱいにUIWebViewを広げたく、Tailing Space, Leading Space, Bottom Space, Top Spaceの値をSuperview(view)から”0”に設定すると左右に空白が発生します。Tailing Space, Leading Spaceの値を”-16”にすると画面いっぱいになります。非常に違和感を感じます。これはpaddingか何かある状態なのでしょうか?通常の状態なのでしょうか?なぜ、このようなことになっているかわかりません。ご存知の方、ご教示お願いします。 解決 マージンに設定された値を基準として使用するかどうか、AutoLayoutを指定する画面で設定出来るようになっています。 チェックを付けた場合、-16で画面の端になります(モーダル表示した場合は変わってきますが)。チェックを外した場合、0が画面の端を表すようになります。 さらに細かい情報については、こちらが参考になるかと。 ios – What is "Constrain to margin" in Storyboard in Xcode 6 – Stack Overflow https://stackoverflow.com/questions/25807545/what-is-constrain-to-margin-in-storyboard-in-xcode-6 回答者: Anonymous

StoryboardのNavigation Barの存在理由

投稿者: Anonymous StoryboardでUIを配置していく時に、画面右下からNavigation Barを選択してViewControllerに配置してみるのですが、NavigationControllerのナビゲーションバーのようになりませんよね?ViewControllerの上に配置してもNavigationControllerのナビゲーションバーと縦のサイズが違いますし、それにNavigation Itemを引っ張ってきて配置してもNavigation Barには反映されません。このNavigation Barは一体何のためにあるのでしょうか?NavigationControllerのナビゲーションバーとは別物と考えたほうがいいでしょうか? 解決 Storyboardが登場してからは、ナビゲーションコントローラと中身のビューコントローラを一緒にInterface Builderで作ることができるようになったので、Navigation Barを単体で配置するのはレアケースだと思います。 使い方としては、ナビゲーションコントローラは必要ないけど、見た目を同じにしたいとか、上部にバーと閉じるボタンを配置したいとか、そういうときに使います。 特にStoryboardが登場する以前は、ビューに単体でNavigation Barを配置して、タイトルと左右にボタンを置いて、モーダルビューで表示する、といったときに簡単にInterface Builderだけで作れて便利とかそんな感じで使います。 似ている例を言うと、Search BarとSearch Display Controllerの関係とか。Search Display Controllerを使うほどじゃないけど、Search Barを置いて検索できるようにしたいというときはSearch Barだけ使う、のと同じです。 といったものなので、特に今までNavigation Barを使ったことがなくて、それで困っていないなら特に気にすることはありません。 ちなみに、ナビゲーションコントローラを使った場合と比べて高さが異なるというのは勘違いで、iOS 7からステータスバーと一体化した見た目になったのでそのように見えるだけで、ビゲーションコントローラを使ったときと同じ見た目にすることは可能です。 ビューコントローラにナビゲーションバーをステータスバーの高さだけ下げて設置して、デリゲートを接続して、そのデリゲートで下記のメソッドを実装します。 – (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar { return UIBarPositionTopAttached; } ここでUIBarPositionTopAttachedを返すと、ステータスバーと一体化した見た目にしてくれます。 まとめると、今となっては単体で使うことはあまりないですが、必要ならナビゲーションコントローラを使わないときでも同様の見た目にしたり、ナビゲーションバーの機能を使うことができる、というためにあります。 回答者: Anonymous

StoryboardとUIの紐付けができない

投稿者: Anonymous 現在上の画像のようにStoryboardにScrollViewを三つ配置した状態で、.hファイルにそれぞれのScrollViewを紐付けようとしているのですが、.hファイル上にIBOutletを設置することができません。まず、Custom Classにクラス名を設定しようとしてもできません。継承しているクラスが問題でしょうか?イマイチStoryboardとクラスの関係がわかっていません。 何が原因でStoryboardとUIを紐付けることができないのでしょうか? #import <UIKit/UIKit.h> @interface PagerMiddle : UIView @end ——追記—— PagerMiddleクラスの継承をUIViewからUIScrollViewに変更すると、Custom Classが設定できるようになりました。しかし以前StoryboardとUIの紐付けができないままです。 解決 もしかしてStoryboardからPagerMiddleにIBOutletを作成しようとしていませんか? もしそうであればそれはできません(必要もありません)。 Harawoさんがコメントで UIViewControllerのサブクラスのコードと「紐付け」できないということでしょうか? と確認をしているようにStoryboardからIBOutletを作成するのはPagerMiddleを配置しているUIViewConrollerに対してです。 実際にはこんな感じになります(ViewControllerの上にCustomScrollViewを配置してViewControllerにIBOutletで紐付ける)。 違うかなと思ったのですが本文中にUIViewControllerに関する記述がなかったので、 念のため記載させていただきました。 的外れだったら申し訳ありません。 回答者: Anonymous

Xcodeのstoryboardでsize inspectorのConstraints指定したオブジェクトの大きさを把握したい

投稿者: Anonymous XcodeのstoryboardでConstraintsで指定したオブジェクトの大きさを見ながら開発したいと思っています。 size inspectorのConstraintsで数字指定してもstoryboard上(Canvas)のオブジェクトには反映されません。逆に”Use canvas size”と指定するとCanvas上のサイズが反映されます。 WidthやHeightに数字指定するとCanvas上のオブジェクトに反映されるということをやりたいのですが、どこかに設定でもあるのでしょうか。 ご存知の方、ご教示お願いします。 —-(設定状態追加) —- 画面イメージを追加しました。右の方でConstraintsをUIWebViewに対し上下左右100pt設定していますが、Canvas上では反映されておらず右に174pt, 下に390pt設定された状態になっています。 解決 制約で指定されている値を修正する場合、以下の手順でどうでしょうか? 制約で指定されている値をフレームに反映する場合、以下の手順でどうでしょうか? 回答者: Anonymous

StoryBoardを使って端末(4s,5s,6sなど)ごとにImageViewやButtonのサイズを変更したい

投稿者: Anonymous 最近StoryBoardを使い始めたのですが、端末ごとにうまく画像やButtonの配置ができません。 例えば画像のようにたくさんのButtonを均等に配置する場合、Buttonのwidthとheightを先に指定してしまうため、6sや5sではうまく画面に収まった場合でも、4sでは画面からButtonがはみ出してしまいます。 今回は出来るだけコードを書かずにStoryBoardを使って実装したいと考えています。 先にwidthとheightを指定せずに画面の比率からうまくサイズを調整したいのですが、コードを書かずにAutoLayoutだけで実装することは可能でしょうか?現在Buttonのwidthとheightをviewのwidthの1/5のサイズにできないかと考えています。 もし可能な場合は、そのやり方を教えていただけないでしょうか?宜しくお願いいたします。 解決 Buttonのwidthとheightをviewのwidthの1/5のサイズにできないか はい、できます。 まず、View Controller上に、ビュー(ボタン、Image Viewなど)を配置し、横幅を、正確にベースViewの横幅の1/5にします。 そして、Document Outline上で、ベースViewと、配置したViewを、Commandキーを押しながら両選択します(下図)。 Pinをクリックして、ポップオーバーを表示し、Equal Widthsにチェックを入れ、Add Constraintします(下図)。 つぎに、Constraintを選択して、そのSize Inspectorを表示します。Multiplierを0.2(5分の1)に設定します(下図)。 これで、ベースViewの横幅5分の1の、ビューの横幅を設定できます。ほかの必要なConstraintsを設定してください。 iOSシミュレータで、iPhone 4s、iPhone 6s Plusで実行したスクリーンショットです。 スクリーンサイズにより、ビューのサイズが可変になっているのがわかります。 回答者: Anonymous

セグエを使わない画面遷移時の次画面が黒くなる

投稿者: Anonymous セグエを使わない画面遷移についてなのですが、次画面に遷移した時にビルド画面が黒くなります。 Storyboardを見てみると背景は白なのですが、ビルドすると何故か黒です。 また設置したUI部品も表示されません。 そこで次画面におけるViewControllerで背景色のコードを打ち込むと、反映されます。 (あまりコーディングは得意ではないので、なるべくStoryboardを使用して作業していきたいのですが……) セグエを使わない画面遷移の場合、次画面の部品設置や背景などのカスタマイズなど、全てViewControllerでコーディングしなければならないのでしょうか? それか、次画面においてStoryboardを反映させるための設定などあるのでしょうか? お詳しい方がいましたら、ご回答宜しくお願い致します。 【補足】 以下が現在の遷移元のViewControllerになります。 コメントでご指摘してくださったことを試してみましたが、どうやら部品配置やサイズの見直し、Autolayoutをオフにしてみましたが画面は真っ黒のままです。 一応遷移先の画面は分かりやすく青に設定したのですが、それすら反映されず……という状況です。 import UIKit class ViewController: UIViewController { @IBAction func nextButton(sender: AnyObject) { //ボタン接続の上、セグエを使わずにコーディングだけで画面遷移 // 遷移するViewを定義する. let mySecondViewController: UIViewController = SecondViewController() // アニメーションを設定する. mySecondViewController.modalTransitionStyle = UIModalTransitionStyle.PartialCurl // Viewの移動する. self.presentViewController(mySecondViewController, animated: true, completion: nil) } } override func viewDidLoad() { super.viewDidLoad() // Do any…(Continue Reading)

storyboard上でUIViewからsegueは張れないのか

投稿者: Anonymous storyboard上でUIViewから他のviewControllerにsegueが張りたいです。 UIButtonは右ドラッグでsegueが張れるのですが、classをUIButtonに変えてもsegueが張れません。 ソース上から指定する必要があるのでしょうか? 解決 方法が分かりました。 segueを張りたいviewに対してTapGestureRecognizerを追加し、 そのTapGestureRecognizerからviewcontrollerにsegueを張る事が出来ます。 回答者: Anonymous

Swift TableViewの最初のCell表示の位置がおかしい(初期位置が中央になる)

投稿者: Anonymous 下図のように、最初のCellの表示位置がTableの縦方向真ん中から表示されてしまいます。 このテーブルに対するコードは以下のコードだけです。 TableViewはStoryboardにおいているだけです。 特にTableViewCellは作成していません。 改善方法を教えていただけると幸いです。 よろしくお願いいたします。 @IBOutlet weak var tblHistory: UITableView! let cellID = “historyCell” //テーブルのデータ総数を返す func tableView(_ tableView: UITableView ,numberOfRowsInSection section: Int) -> Int{ return workContainer.Days.count } //指定した行を返す func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{ let cell = UITableViewCell(style: UITableViewCellStyle.value1, reuseIdentifier: cellID) let row:Int = indexPath.row cell.textLabel?.text = DateTimeConv.stringFromDate(date: workContainer.Days[row].Day…(Continue Reading)

Xcode ViewControllerから別ストーリーボードにあるTabViewControllerへの画面遷移をコードでしたい

投稿者: Anonymous XcodeでiPhoneアプリを作成しております。 Main.storyboard上にあるViewControllerにあるボタンを押下した際に、Index.storyboard上にあるTabView Contollerへコードで画面遷移をさせたいです。 こちらがMain.storyboard上にあるViewControllerです。 Custom ClassのClassは「ViewController」、storyboardIDは「Login」です。 画面遷移させるボタンのClass名は「Loginbutton」です。 こちらがIndex.storyboard上にあるTabView Contollerです。 Custom Classのクラスは「TabViewController」、storyboardIDは「show」です。 ViewControllerから、このTabViewControllerに画面遷移することで、初期表示されているタブ左側の画面のViewCpontroller「Item1」を表示したいです。 こちらが表示したい画面の、「Item1」というClass名を付けたViewControllerです。 TabViewControllerに画面遷移することでItem1が表示されると考えたため、 StoryboardIDは付けていません。 文末に載せたサイトを参考に、ViewController.swiftに以下のコードを書きましたが、シュミレーターで表示した際にボタンを押下すると、アプリがクラッシュしてしまいました。 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func Loginbutton(_ sender: Any) { let storyboard: UIStoryboard = UIStoryboard(name: “Index”, bundle: nil) let nextView…(Continue Reading)

Could not find a storyboard named ‘Dialog’ in bundle NSBundle

投稿者: Anonymous 現在ボタンが押されるとカスタムダイアログを表示させるといったプログラムを組んでいるのですが、StoryboardのidentifyのStoryboard IDに「Dialog」と入力して以下のコードを実行してみたところ、Could not find a storyboard named ‘Dialog’ in bundle NSBundleというエラーが発生して別のViewControllerを表示することができません。上記に書いた設定の他に何か行わなければならない設定があるのでしょうか?原因が分からず困っています。どなたか分かる方にご教授いただきたいです。すみませんが、宜しくお願いします。 – (IBAction)clickButton:(id)sender { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@”Dialog” bundle:nil]; } 解決 指定するのは「Storyboard ID」じゃなくて、Storyboardのファイル名です。プロジェクトを作成して、変更してなければ、「Main」となってるはず。 – (IBAction)clickButton:(id)sender { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@”Main” bundle:nil]; } なんとなく、Storyboardではなくて、Storyboard内のあるインスタンス(おそらくはView Controller?)を指定なさりたいような印象を受けますが、もしそうなら、質問内容を編集して、紛れがないような表現にしてください。 回答者: Anonymous

UITabBarControllerにて、それぞれのViewで異なる効果音を鳴らす

投稿者: Anonymous storyboardで生成したUITabBarControllerを用いて、それぞれのViewで異なる効果音を鳴らし、TabBarをタップすると、他のViewに遷移したときに元いたViewの効果音を止める、という動作を書きたいのですが、 とりあえず分かっていることは「viewDidLoadに効果音再生のコードを書く」ということだけで、 前の質問(UITabBarControllerでの切り替えに応じた処理について(Swift)、TabBarItemのボタンの原理はイマイチよく理解できませんでした。 (前の質問で言うと tabBarController.tabBar.delegate = self で「delegateというクラスは存在しない」と表示され、つまづきました。) storyboardでのView内では一つしかTabBarItemが表示されていないので、該当する全てのViewに同じコードを書かなければならないのですか? UITabBarItemにActionがあれば楽なのですが…… import UIKit import AVFoundation class HomeView: UIViewController, AVAudioPlayerDelegate, UITabBarDelegate { //サウンドの変数宣言 var myTabSound: AVAudioPlayer! @IBOutlet weak var myTabBar: UITabBarItem! override func viewDidLoad() { super.viewDidLoad() myTabBar.tabBar.delegate = self //↑ここでつまづき、他に思いつくdelegateを含むコードを書いてもエラーになる //サウンドのソースコード生成 let soundFilePath: NSString = NSBundle.mainBundle().pathForResource(“effect8”, ofType: “mp3”)! let fileURL : NSURL = NSURL(fileURLWithPath: soundFilePath)!…(Continue Reading)

Xcode(Swift)でのセグエを使わない画面遷移について

投稿者: Anonymous Xcode 6 + Swift で、 セグエを使用しない画面遷移をしたいのですが、ビルドしても上手く遷移しません。セグエなしで画面遷移するしようとして、遷移先のストーリーボード上の画面の Storyborad ID に next という名前で設定した場合、コードは以下のようで合っているでしょうか? お詳しい方がいましたらご回答宜しくお願い致します。 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction…(Continue Reading)

iOSでのカスタムダイアログの表示

投稿者: Anonymous ボタンが押されるとカスタムダイアログを表示するといったプログラムを組んでいるのですが、 ルートのViewControllerにMain.Storyboardにあるダイアログ用のViewControllerを表示させるにはどうすればよろしいでしょうか?色々と調べていても実装例が少なく、下記のサイトを参考にしているのですがうまくいきません。(特にobjc_setAssociatedObjectというところで躓いてしまってます。。。) https://codeiq.jp/magazine/2014/05/9493/ どなたかカスタムダイアログの表示のさせ方が分かる方がいればご教授いただきたいです。 すみませんが、よろしくお願いします。 解決 参考ページではUIWindowを使用しているようなので、 おそらくやりたい事とは異なると思いますが、参考程度になれば幸いです。 ※すみません、参考先はあまり読んでいません。 単純にStoryboard上のViewControllerを表示させるだけなら下記のようなコードで可能です。 – (IBAction)touchUp:(UIButton *)sender { UIStoryboard* sb = [UIStoryboard storyboardWithName:@”Main” bundle:nil]; CustomDialogViewController* vc = [sb instantiateViewControllerWithIdentifier:NSStringFromClass([CustomDialogViewController class])]; [self presentViewController:vc animated:YES completion:nil]; } ただ、これだと背景が真っ黒になってしまいますので、 別案としてUIViewControllerではなくUIViewを使用する方法もあります。 – (IBAction)touchUpAdd:(UIButton *)sender { CustomDialogView* view = [CustomDialogView loadFromNib]; view.delegate = self; view.frame = self.view.frame; view.alpha = 0.0f; [self.view addSubview:view];…(Continue Reading)

iOSでチェックボックスの実装

投稿者: Anonymous 出来ればStoryboard上でcheckboxを配置したいのですが、見当たりません。 皆さんはiOSでcheckboxを作る時はどうしていますか? 解決 UIControlStateに対応した画像とtouchに対応してselectの切り替えを実装して作りました。 デフォルトで置いといて欲しいですね [_checkbox setImage:[UIImage imageNamed:@”checkbox_off.png”] forState:UIControlStateNormal]; [_checkbox setImage:[UIImage imageNamed:@”checkbox_on.png”] forState:UIControlStateSelected]; [_checkbox addTarget:self action:@selector(onCheckboxClick:) forControlEvents:UIControlEventTouchDown]; -(void)onCheckboxClick:(UIButton*)button{ _updateCheckbox.selected = !_updateCheckbox.selected; } 回答者: Anonymous

(Bar Button Item) コードで配置した場合とStoryboard上で配置した場合の違い

投稿者: Anonymous ナビゲーションバーに「編集ボタン」をコードで配置すると、 編集モードでは「完了」 通常モードでは「編集」とボタンに表示されるかと思います。 self.navigationItem.rightBarButtonItem = editButtonItem() 一方、Storyboard上で「Bar Button Item」を配置し「System Item」プロパティを「Edit」に変更したボタンはボタンの表示が「完了」に変わりません。 質問は2つあります。 1.ボタンの文字を変更する方法を教えてください。 2.今現在は編集ボタンに関してのみ差異(コードで配置する場合とSB上で配置する場合での差異)に気づきましたが、他にも挙動で違いがあるものでしょうか? 画面レイアウトに関する部分は可能な限りSB上で設定ができれば開発効率が良いかなと思っていたのですが… コードでセットする方が安心かな〜と思い始めました^^; 解決 ボタンの文字を変更する方法 Storyboard上から追加するデフォルトのBar Button Itemでは自動で「Edit→Done」のように 文字を変更することはできないと思います。   Storyboardから追加できるBar Button ItemはUIBarButtonItemです。 System Itemプロパティは UIBarButtonItemのinitWithBarButtonSystemItem:target:action:に該当します。 このメソッドの引数のSystem Itemは iOSデフォルトのボタンの デザインの設定 を意味します。   ※Referenceに詳細が書かれています。 UIBarButtonItem Class Reference: initWithBarButtonSystemItem:target:action: UIBarButtonItem Class Reference: UIBarButtonSystemItem   もし、Storyboard上で配置したいのであれば、 UIBarButtonItemをカスタム化 することが考えられます。 つまり、UIBarButtonItemを継承して、文字変更メソッドを追加したクラスを作成し、 Storyboard上で追加したUIBarButtonItemのCustom Classにそれを設定する方法です。 「Storyboardから追加するBar Button Item」と「editButtonItem()」の違いについて…(Continue Reading)

XcodeのAutoLayoutについて

投稿者: Anonymous お世話になります。 XcodeのStoryboardでViewのサイズ取得について質問があります。 マルチデバイス対応をしたくて、AutoLayoutを利用しています。 添付画像のツールバーは高さ44と左右のSpacingを0にConstraints設定しています。 ラベルは一番下はツールバーに対してBottom Spaceと、上のラベルに対するTop SpaceとのConstraintsを、以下他のラベルも上下関係のConstraintsを設定しています。 上にある赤い部分はViewで、Top Spaceを0に、左右のSpacingを0に、Bottom Spaceを一番上のラベルに対して5のConstraintsを設定しています。 動作させると赤いViewはデバイスに対して大きさをきちんと変えてくれるのですが、この「Constraintsの制約によって大きさの変わったView」の正確なサイズを取得する事はできますか? ご教示頂ければ幸いです。 追記:4/5 ご指摘に従って再度試してみました。 viewDidLayoutSubviewsで [self.view layoutIfNeeded]; の後に数値を取得したところ、正しい値を取得できました。 有難うございました。 解決 取得したいタイミングで、UIViewのプロパティ「frame」を取得すれば、Constraintによって変更された後の大きさと位置になっています。 – (void)viewDidAppear:(BOOL)animatedメソッドや- (void)viewDidLayoutSubviewsメソッドをオーバーライドして、取得すれば、自動レイアウト適用後のサイズと位置が取れます。 回答者: Anonymous

swiftでstoryboardでUIimageviewのx,y座標の制約をつけたい場合

投稿者: Anonymous swiftでUIimageviewを使い、画像を表示して その画像のサイズをCGrectで指定しているのですが、 この場合、CGRect(x:x座標, y:y座標,width:400, height:400)のように x座標とy座標も含めなければ動きません。 画像のx,y座標はstoryboardの制約で位置を決定したいのですが、 画像のサイズを指定しつつ、座標はstoryboardで決定するという書き方はどのようにすればよいでしょうか。 解決 storyboardの制約とおっしゃっているのはAutolayoutの制約という意味でしょうか? storyboardはGUIでAutolayoutの制約も指定可能なツールです。 画像のサイズを指定しつつ、座標はstoryboardで決定するという書き方はどのようにすればよいでしょうか。 書き方の質問ですので、storyboard上での設定でなく、コードベースでのAutolayoutの制約の書き方と想定して回答します。 また、指定するx、y座標についても詳細がありませんでしたので、以下と想定します。 x座標:親View(view)から右に10px y座標:親View(view)から下に20px 上記の条件の制約を追加する場合、以下のようなコードとなります。 let imageView = UIImageView() imageView.topAnchor.constraint(equalTo: view.topAnchor, constant: 10).isActive = true imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20).isActive = true imageView.widthAnchor.constraint(equalToConstant: 400).isActive = true imageView.heightAnchor.constraint(equalToConstant: 400).isActive = true 回答者: Anonymous

StoryBoardで作成したUITableViewCellに関連付けたTappedGestureへ、 Cellの情報を渡したい。

投稿者: Anonymous UIGestureでUITableViewのCellをタップしたら、そのタップしたセルの情報を取得し、 UIGestureのメソッド内にて、メソッドを定義したいのです。 (さらに具体的には、セルの中に画像を埋め込んでおり、その画像の情報を取得し、 そのセルの上にさらにImageViewを表示させ、タップしたセルの情報を保存したいです。) UITableViewDataSourceで定義されている、セルを返すメソッドですが、、↓ func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ let cell = tableView.dequeueReusableCellWithIdentifier(“Cell”, forIndexPath: indexPath) as! UITableViewCell return cell } tableView: UITableViewとcellForRowAtIndexPath indexPath: NSIndexPathの値が取得できればcellの情報は取得できるのですが、、 通常、このメソッド中で処理すれば良いのですが、 StoryBoardからTapped GestureでActionを指定しているので、 それは使えません。 尚、コードでそのcellに関連付けたGestureを関連付けると、 UITableViewが持っているGesture系のイベントとバッティングして反応しないという現象が起こっているのでStoryBoardのcell上のGestureを貼り付けている状態です。 メソッドの引数にtableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPathを追加すればStoryboardから動作しなくなりますし、そもそもメソッドにそれらの引数を追加すれば値が渡ってくるものなのかなという疑問もあります。。。 ご教授いただけないでしょうか。 解決 コメントだけでは分かりづらいのでサンプルコードで説明させていただきます。 (説明用のコードのため色々とツッコミどころがあるかもしれませんがご容赦ください) func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let…(Continue Reading)

StoryboardのCustom Classに自作のクラスが表示されない

投稿者: Anonymous クラスを作成してそれをStoryboardと紐付けしたいのですが、なぜかStoryboardのCustom Classに自作したクラス名が表示されず、紐付けができません。クラス名を打ち込んでも消えてしまいます。そのクラスは現在UIViewControllerを継承しています。以前は今回のような流れでできたのですが……。現在Xcode6を使用しています。…仕様が変わったのでしょうか?初歩的な質問で申し訳ないのですが、宜しくお願いします。 ちなみに下記にstoryboardに紐付けたいクラスのヘッダファイルを記載します。(個人的にここが少し怪しそうな気がしてます……) #import <UIKit/UIKit.h> @interface AnimationView : UIViewController – (id)initWithAnimation:(float)duration fadeOutDelay:(float)fadeOutDelay finishDelay:(float)finishDelay; @end 解決 解決することができました。 どうやらstoryboard上をダブルクリックしてUI配置モード(?)になっていたことが原因でした。 もういちどstoryboard上をダブルクリックして遠目の画面にしてCustom Classのclass欄にクラス名を入力すると、正しく入力されました。 回答者: Anonymous

Storyboard上のNavigationBarにBar Button Itemを置く

投稿者: Anonymous NavigationControllerから別のViewControllerにcontrolキー + クリックで引っ張ってshowを選択すると、ViewControllerにNavigationBarが表示されると思うんですが、このNavigationBarにStoryboard上でBar Button Itemを追加することはできないのでしょうか?プログラムで配置するしかないのでしょうか? ということは、このshowを選択した時に表示されるNavigationBarは、ViewControllerにEmbed in → Navigation Controller としたとき表示されるNavigationBarとは少し違いがあるのでしょうか? どなたか分かる方がいれば教えていただきたいです。 すみませんが、よろしくお願いします。 解決 まず、Navigation Itemを、Navigation Barにドロップして、つぎにBar Button Itemをドロップしましょう。 Document Outlineで、こういうヒエラルキーになっているのを確認してください。 Embed in → Navigation Controller としたとき表示されるNavigationBarとは少し違いがあるのでしょうか? 正直言わせてもらうと、Navigation Controllerから、ダイレクトにView Controllerに、ShowのSegueを引っ張るケース(そのような必然性)を想像できないので、なんともお答えいたしかねます。 回答者: Anonymous

TableViewCell内にCollectionViewを置く

投稿者: Anonymous xibでTableViewCellを作成し、そのTableViewCellの内にCollectionViewを置きました。次にそのCollectionViewの中にCollectionViewCellを置こうとするのですが、なぜかセルを置くことができません。StoryboardのUIViewControllerにCollectionViewを置いてCollectionViewCellを置くと、ちゃんと置くことができます。また、StoryboardではCollectionViewを置くとCollectionViewの背景が真っ黒な状態で追加されるのですが、xibでCollectionViewを置くと、初めからセルが網目のように追加された状態で置かれます。ということはxibではCollectionViewの中にCollectionViewCellを置くことができないのでしょうか?CollectionViewCellが置けないので、Storyboard上でセルのidentifierが設定できず少し困っています。 —追記— ViewController.m @implementation ViewController – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UINib *nib = [UINib nibWithNibName:NSStringFromClass([CustomCell class]) bundle:nil]; [self.tableView registerNib:nib forCellReuseIdentifier:@”cell”]; } – (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {…(Continue Reading)

Xibを使って生成したTableViewのデリゲートメソッドが呼ばれない

投稿者: Anonymous 現在XibでUIViewを一つ置き、そのUIViewの中にUITableViewを置いてます。 そしてコードは以下のように書きました。 @implementation CategoriesViewController – (void)viewDidLoad { [super viewDidLoad]; CategoriesView *categoriesView = [[CategoriesView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:[categoriesView loadFromNib]]; } @end @implementation CategoriesView { NSMutableArray *categoriesArray; } – (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { categoriesArray = [[NSMutableArray alloc] initWithObjects:@”食品”, @”服”, @”おもちゃ”, @”家電”, @”本”, nil]; } return self; } – (id)loadFromNib { return…(Continue Reading)

navigationControllerの任意の画面への遷移

投稿者: Anonymous 日記アプリを作っている初心者です。 現在、写真を複数選択できるImagePicker機能を作っています。 そこで実装したい画面遷移がLINEアプリのように、テキスト入力画面からカメラボタンを押すと、すべての写真が表示され、画面左上の戻るボタンを押すとアルバムの選択画面になるというものです。 説明が下手なので、やりたいことを図にすると以下です。      この場合、テキスト入力画面から self.presentViewController()で写真選択画面に遷移すると、ナビゲーションバーが表示されず、うまくいきませんでした。 どのようにすれば実装できるのでしょうか。 解決 UINavigationControllerのviewControllersプロパティを使います。 例えば、以下のようなコードになると思います。 let albumSelection = AlbumSelectionViewController() let photoSelection = PhotoSelectionViewController() let navigation = UINavigationController() navigation.viewControllers = [albumSelection, photoSelection] self.presentViewController(navigation, animated: true, completion:nil) 回答者: Anonymous

XCodeのストーリーボードで青い線表示

投稿者: Anonymous XCodeのストーリーボードで青い線が表示されるようになりました。 「Title」とか「duration_text」やセルの周りにある青い線です。 特に困ることはないのですが、消して作業したいなと思っています。 おそらく何かショートカットを触ってしまったと思いますが、消し方をご存知の方、ご教授いただけると幸いです。 追記: 全てのチェックを外してみたのですが、消えませんでした。 解決 https://stackoverflow.com/questions/35553526/how-to-hide-blue-line-covering-views-in-xib-storyboard-in-xcode-7-2 これですね。 Editor > Canvas > Show Bounds Rectangles のチェックをはずせば消えます。 回答者: Anonymous