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

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

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

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

Xcode

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

Swift

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

Q&A

2回答

2044閲覧

テキストラベルに表示させた記事のタイトルの先頭部分が見切れてしまう (RSSフィードを使ったニュースキュレーションアプリ)

退会済みユーザー

退会済みユーザー

総合スコア0

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/08/17 06:34

編集2019/08/21 08:46

前提・実現したいこと

プログラミング(swift)を勉強し始めて1週間程度の超初心者です。

progateをさらっとやったくらいで、まだ右も左も分からない状態です...。

RSSフィードを使ったニュースキュレーションアプリを作ろうと試みているところで、以下の物を使用しています。

使っているRSSフィードのサイト:
https://news.finance.yahoo.co.jp/cp/coindesk

使っているタブのライブラリ
https://github.com/Jiar/SegementSlide

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

![イメージ説明]

RSSフィード利用して取得した記事のタイトルのテキストラベルの表示させていますが、記事のタイトルの先頭部分が見切れてしまっています。セルの高さを高くしたり文字の大きさを変えてみたり、cell.textLabel?.numberOfLinesの数値を変更してもダメでした。

コード

import

1import SegementSlide 2 3class Page10ViewController: UITableViewController,SegementSlideContentScrollViewDelegate,XMLParserDelegate { 4 5 var parser = XMLParser() 6 7 var newsItems = [NewsItems]() 8 9 var currentElementName: String! 10 11 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 16 17 tableView.backgroundColor = .clear 18 19 let image = UIImage(named: "9.jpg") 20 let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.tableView.frame.size.width, height: self.tableView.frame.size.height)) 21 imageView.image = image 22 self.tableView.backgroundView = imageView 23 24 25 let urlString: String = "https://news.finance.yahoo.co.jp/rss/cp/coindesk.xml" 26 let url: URL = URL(string: urlString)! 27 parser = XMLParser(contentsOf: url)! 28 parser.delegate = self 29 30 31 parser.parse() 32 } 33 34 @objc var scrollView: UIScrollView { 35 return tableView 36 } 37 38 39 override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 40 41 return self.view.frame.size.height/3 42 43 44 } 45 46 47 override func numberOfSections(in tableView: UITableView) -> Int { 48 49 return 1 50 } 51 52 53 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 54 55 return newsItems.count 56 57 58 } 59 60 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 61 62 let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "Cell") 63 cell.backgroundColor = .clear 64 let newsItem = self.newsItems[indexPath.row] 65 cell.textLabel?.text = newsItem.title 66 cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 15.0) 67 cell.textLabel?.textColor = .black 68 cell.textLabel?.numberOfLines = 0 69 cell.textLabel?.frame = CGRect(x: 0, y: 0, width: 0, height: 0) 70 cell.textLabel?.sizeToFit() 71 72 cell.detailTextLabel?.text = newsItem.pubDate 73 cell.detailTextLabel?.textColor = .black 74 75 return cell 76 } 77 78 func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) { 79 80 currentElementName = nil 81 if elementName == "item" { 82 self.newsItems.append(NewsItems()) 83 } else { 84 85 currentElementName = elementName 86 87 } 88 89 } 90 91 func parser(_ parser: XMLParser, foundCharacters string: String) { 92 93 if self.newsItems.count > 0 { 94 95 let lastItem = self.newsItems[self.newsItems.count - 1] 96 97 switch self.currentElementName { 98 99 case "title": 100 lastItem.title = string 101 102 case "link": 103 lastItem.url = string 104 105 case "pubDate": 106 lastItem.pubDate = string 107 print(lastItem.pubDate as Any) 108 default: break 109 110 } 111 112 } 113 114 } 115 116 func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { 117 118 self.currentElementName = nil 119 120 121 } 122 123 func parserDidEndDocument(_ parser: XMLParser) { 124 125 self.tableView.reloadData() 126 127 128 } 129 130 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 131 132 let webViewController: UIViewController = WebViewController() 133 134 webViewController.modalTransitionStyle = .crossDissolve 135 let newsItem = newsItems[indexPath.row] 136 UserDefaults.standard.set(newsItem.url, forKey: "url") 137 138 139 self.present(webViewController, animated: true, completion: nil) 140 141 } 142 143} 144 145 146コード

イメージ説明

NewsItemsのクラス
イメージ説明

storyboard
イメージ説明

セルの高さを調整している部分

![イメージ説明

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

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

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

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

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

fuzzball

2019/08/21 07:59

・セルは初期状態のままですか?(Storyboard使ってますよね?) ・NewsItemsはクラスですか? ・一番下のセルは正しく表示されているように見えますが?
fuzzball

2019/08/21 08:03

あと、どうでもいいことですが、「見切れる」は本来逆の意味ですので、単に「切れる」でいいんじゃないかと思います。(なんでみんな「見切れる」って使いたがるんだろう)
fuzzball

2019/08/21 08:20 編集

こちらで試してみましたが再現しませんでした。(端末は5と7+で確認) NewItemsは適当なクラスを作りましたが、それ以外のコードはほぼそのままです。(tableView(_:didSelectRowAt:)とSegementSlideを削除)
退会済みユーザー

退会済みユーザー

2019/08/21 08:26

コメントありがとうございます。 ・セルは初期状態のままですか?(Storyboard使ってますよね?) →Storyboardを使ってます。 スクリーンショット:https://imgur.com/iXdqjlo →セルが初期状態とは…どうゆうことでしょう…?(素人ですみません) セルの高さとかを調整しているのはこの辺り ↓ スクリーンショット:https://imgur.com/mjuXKIm です。 ・NewsItemsはクラスですか? →クラスだと思います。 スクリーンショット:https://imgur.com/EgzIIXn ・一番下のセルは正しく表示されているように見えますが? →見切れて表示されるセルと見切れずに表示されるセルが混在しているようです…。
fuzzball

2019/08/21 08:30

>>セルが初期状態とは…どうゆうことでしょう…? Storyboard上でTableViewControllerを配置すると、自動的にセルが一つ登録されます。このセルは初期状態で(セルID以外は)そのままですか?という意味です。
退会済みユーザー

退会済みユーザー

2019/08/21 08:31

あ、すみません、追加のコメントをいただいているのに気づかず、また見切れるを使ってしまいました。
退会済みユーザー

退会済みユーザー

2019/08/21 08:48

画像見づらかったら、すみません。 今、質問内容の方にも編集して載せました。
退会済みユーザー

退会済みユーザー

2019/08/21 08:55

>>セルが初期状態とは…どうゆうことでしょう…? Storyboard上でTableViewControllerを配置すると、自動的にセルが一つ登録されます。このセルは初期状態で(セルID以外は)そのままですか?という意味です。 → 動画教材を見直していたらTableViewControllerは使っていなかったようです…。 全て普通のViewControllerを使っていました…。
guest

回答2

0

思ったのですが、問題は表示の仕方(位置の問題)では無いのでは無いですか?
print(textLabel.text)を記入してみて、コンソールの文字が、
cellに表示されている内容と同じなら、

そもそものRSSの取得・形成に問題があるのでは無いでしょうか?

投稿2019/08/19 03:33

hameji

総合スコア1380

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

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

0

確証はないのですがこちらのコードを削除して表示が変わりますか?

swift

1cell.textLabel?.frame = CGRect(x: 0, y: 0, width: 0, height: 0) 2cell.textLabel?.sizeToFit()

投稿2019/08/17 07:33

TakuyaAso

総合スコア1361

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

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

退会済みユーザー

退会済みユーザー

2019/08/17 07:36

削除して、ビルドし直しても変わらないですね…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問