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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

2812閲覧

swiftのTabPageViewControllerライブラリを継承して使いたいのですが

kaji

総合スコア648

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

1クリップ

投稿2016/07/24 23:41

smartnews風UIのライブラリ
https://github.com/EndouMari/TabPageViewController

こちらのサンプルにあった以下
https://github.com/EndouMari/TabPageViewController/blob/master/Example/TabPageViewController/ViewController.swift
は実行できました。

swift

1let tc = TabPageViewController.create() 2 let vc1 = UIViewController() 3 vc1.view.backgroundColor = UIColor(red: 2/255, green: 2/255, blue: 1/255, alpha: 1.0) 4 let vc2 = UIViewController() 5 vc2.view.backgroundColor = UIColor(red: 252/255, green: 150/255, blue: 149/255, alpha: 1.0) 6 let vc3 = UIViewController() 7 vc3.view.backgroundColor = UIColor(red: 149/255, green: 218/255, blue: 252/255, alpha: 1.0) 8 let vc4 = UIViewController() 9 vc4.view.backgroundColor = UIColor(red: 149/255, green: 252/255, blue: 197/255, alpha: 1.0) 10 let vc5 = UIViewController() 11 vc5.view.backgroundColor = UIColor(red: 252/255, green: 182/255, blue: 106/255, alpha: 1.0) 12 tc.tabItems = [(vc1, "Mon."), (vc2, "Tue."), (vc3, "Wed."), (vc4, "Thu."), (vc5, "Fri.")] 13 tc.isInfinity = true 14 let nc = UINavigationController() 15 nc.viewControllers = [tc] 16 var option = TabPageOption() 17 option.currentColor = UIColor(red: 246/255, green: 175/255, blue: 32/255, alpha: 1.0) 18 tc.option = option 19 navigationController?.pushViewController(tc, animated: true)

ただ、左上や右上にナビゲーションのボタンなども設置した方ため、
TabPageViewController.create()で生成されるPageViewControllerのインスタンスにそういうコードを追加したいと思ってます。

思いつく方法として以下のようにTabPageViewControllerを継承してサブクラスを作り、そこに色々コードを記述するのが良いかと思ったのですが、

swift

1 2import UIKit 3import TabPageViewController 4 5class PagenewViewController: TabPageViewController { 6 override func viewDidAppear(animated: Bool) { 7 super.viewDidAppear(animated) 8 let vc1 = UIViewController() 9 vc1.view.backgroundColor = UIColor(red: 251/255, green: 252/255, blue: 149/255, alpha: 1.0) 10 let vc2 = UIViewController() 11 vc2.view.backgroundColor = UIColor(red: 252/255, green: 150/255, blue: 149/255, alpha: 1.0) 12 let vc3 = UIViewController() 13 vc3.view.backgroundColor = UIColor(red: 149/255, green: 218/255, blue: 252/255, alpha: 1.0) 14 let vc4 = UIViewController() 15 vc4.view.backgroundColor = UIColor(red: 149/255, green: 252/255, blue: 197/255, alpha: 1.0) 16 let vc5 = UIViewController() 17 vc5.view.backgroundColor = UIColor(red: 252/255, green: 182/255, blue: 106/255, alpha: 1.0) 18 self.tabItems = [(vc1, "Mon."), (vc2, "Tue."), (vc3, "Wed."), (vc4, "Thu."), (vc5, "Fri.")] 19 self.isInfinity = true 20 21 let nc = UINavigationController() 22 nc.viewControllers = [self] 23 var option = TabPageOption() 24 option.currentColor = UIColor(red: 246/255, green: 175/255, blue: 32/255, alpha: 1.0) 25 self.option = option 26 navigationController?.pushViewController(self, animated: true)

アボートしてしまいました。
イメージ説明
tabItemsにデータ入れているはずだし・・・、どこがおかしいのだろうと思ってます。わかる方お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

サブクラスを作成して以下のようにすることでできると思います。
※本家のサンプルを変更しているので、関係ある部分のみ見てください。

swift

1import UIKit 2import TabPageViewController 3 4class ViewController: UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 // Do any additional setup after loading the view, typically from a nib 9 } 10 11 override func didReceiveMemoryWarning() { 12 super.didReceiveMemoryWarning() 13 // Dispose of any resources that can be recreated. 14 } 15 16 @IBAction func LimitedButton(button: UIButton) { 17 let tc = TabPageViewController.create() 18 let vc1 = UIViewController() 19 vc1.view.backgroundColor = UIColor.whiteColor() 20 let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ListViewController") 21 tc.tabItems = [(vc1, "First"), (vc2, "Second")] 22 tc.displayControllerWithIndex(1, direction: .Forward, animated: false) 23 var option = TabPageOption() 24 option.tabWidth = view.frame.width / CGFloat(tc.tabItems.count) 25 tc.option = option 26 navigationController?.pushViewController(tc, animated: true) 27 } 28 29 @IBAction func InfinityButton(button: UIButton) { 30 31 let tc = storyboard?.instantiateViewControllerWithIdentifier("pageView") as! PagenewViewController 32 33 let vc1 = UIViewController() 34 vc1.view.backgroundColor = UIColor(red: 251/255, green: 252/255, blue: 149/255, alpha: 1.0) 35 let vc2 = UIViewController() 36 vc2.view.backgroundColor = UIColor(red: 252/255, green: 150/255, blue: 149/255, alpha: 1.0) 37 let vc3 = UIViewController() 38 vc3.view.backgroundColor = UIColor(red: 149/255, green: 218/255, blue: 252/255, alpha: 1.0) 39 let vc4 = UIViewController() 40 vc4.view.backgroundColor = UIColor(red: 149/255, green: 252/255, blue: 197/255, alpha: 1.0) 41 let vc5 = UIViewController() 42 vc5.view.backgroundColor = UIColor(red: 252/255, green: 182/255, blue: 106/255, alpha: 1.0) 43 tc.tabItems = [(vc1, "Mon."), (vc2, "Tue."), (vc3, "Wed."), (vc4, "Thu."), (vc5, "Fri.")] 44 tc.isInfinity = true 45 46 let nc = UINavigationController() 47 nc.viewControllers = [tc] 48 49 var option = TabPageOption() 50 option.currentColor = UIColor(red: 246/255, green: 175/255, blue: 32/255, alpha: 1.0) 51 tc.option = option 52 navigationController?.pushViewController(tc, animated: true) 53 } 54} 55 56 57// -------------------------------------------------- 58 59import UIKit 60import TabPageViewController 61 62class PagenewViewController: TabPageViewController { 63 64 override func viewDidLoad() { 65 super.viewDidLoad() 66 } 67 68 @IBAction func pushItem(sender: UIBarButtonItem) { 69 print("PUsh Navi Item") 70 } 71 72 override func didReceiveMemoryWarning() { 73 super.didReceiveMemoryWarning() 74 } 75}

e
g

投稿2016/07/26 04:23

編集2016/07/26 12:22
_Kentarou

総合スコア8490

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

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

kaji

2016/07/27 00:55

ありがとうございます。無事サブクラスで実行できました。 _Kentarouさんのおかげで解決できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問