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

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

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

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

Xcode

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

1817閲覧

Swift3でテーブルビューにフォントを出力するプログラムを作りたいです。

Kochan

総合スコア56

iOS

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

Xcode

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2016/10/09 16:58

###前提・実現したいこと
Xcode8、Swift3を使ってテーブルビューにフォントを出力するプログラムを作ろうとしています。

storyboard上にTable Viewを置き、
それをView ControllerのdataSourseとdelegateに繋ぎました。
![イメージ説明

その後、2つのプロトコルを追加し、
フォントを配列に入れセルに表示しようとしました。

Swift2の教科書を使っているために、
ところどころ変わっていて、
調べたのですが対処法がわからない状態です。

お力を貸していただけると嬉しいです。

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

エラーメッセージ1(class ViewController: UIView 〜の部分) Type "ViewController" does not conform to protocol "UITableViewDataSourse" エラーメッセージ2(return celloの部分) Cannot convert return expression of type "UITableView"

###該当のソースコード

Swift3

1import UIKit 2 3class ViewController: UIViewController ,UITableViewDataSource, UITableViewDelegate{ 4 5 var fontName_array:[String] = [] 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11 for fontFamilyName in UIFont.familyNames{ 12 for fontname in UIFont.fontNames(forFamilyName: fontFamilyName as String){ 13 fontName_array.append(fontname as String) 14 } 15 } 16 } 17 18 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 19 return fontName_array.count 20 } 21 22 23 func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)-> 24 UITableView{ 25 let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier:"mycell") 26 27 let fontname = fontName_array[indexPath.row] 28 cell.textLabel?.font = UIFont(name: fontname, size: 18) 29 cell.textLabel?.text = "ABCDE abcde 0123445 あいうえお" 30 31 cell.detailTextLabel?.textColor = UIColor.brown 32 cell.detailTextLabel?.text = fontname 33 return cell 34 } 35 36 override func didReceiveMemoryWarning() { 37 super.didReceiveMemoryWarning() 38 // Dispose of any resources that can be recreated. 39 } 40 41 42} 43

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答1

0

ベストアンサー

Swift3になって記述の仕方が変更されています、以下のコードで手元で問題なく表示されました、ご確認ください。

エラーメッセージ2(return celloの部分)

Cannot convert return expression of type "UITableView"

に関してはUITableViewCellを返すメソッドなので記述のミスかと思います。

swift

1import UIKit 2 3class ViewController: UIViewController ,UITableViewDataSource, UITableViewDelegate{ 4 5 var fontName_array:[String] = [] 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 for fontFamilyName in UIFont.familyNames{ 11 for fontname in UIFont.fontNames(forFamilyName: fontFamilyName as String){ 12 fontName_array.append(fontname as String) 13 } 14 } 15 } 16 17 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 18 return fontName_array.count 19 } 20 21 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 22 23 let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier:"mycell") 24 25 let fontname = fontName_array[indexPath.row] 26 cell.textLabel?.font = UIFont(name: fontname, size: 18) 27 cell.textLabel?.text = "ABCDE abcde 0123445 あいうえお" 28 29 cell.detailTextLabel?.textColor = UIColor.brown 30 cell.detailTextLabel?.text = fontname 31 return cell 32 } 33 34 override func didReceiveMemoryWarning() { 35 super.didReceiveMemoryWarning() 36 } 37}

投稿2016/10/09 20:35

_Kentarou

総合スコア8490

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

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

Kochan

2016/10/10 00:17

完璧でした! Kentarouさん、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問