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

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

ただいまの
回答率

88.09%

テーブルビューに2段のラベルを設けてテキストを表示する方法⇒04 第2画面のタイトルの幅を調整する方法

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,550

score 96

経緯
Take One さんの回答により第1画面より遷移する第2画面のラベルを一段より2段にすることができました。その第2画面に第1画面で選択した行の項目を第2画面のタイトルとして表示することは成功したのですが、そのラベルの幅を調整する方法を教えてください。

作りたい画面: 
第1図:第1画面 TableView01  完成
イメージ説明

第2図:第2画面 TableView02 に第1画面で選んだ行に相当するタイトルをつけたが黒帯の幅を調整したい。

イメージ説明

発生している問題
TableView01よりTableView02に遷移して表や表のタイトルを表示させることはお陰様で成功しております。しかし、上記第2図のとおり表示された黒帯の幅を調整しようとしても、コードの数字を変えても修正されません。

タイトルを表示するTableView02のコードは下記のとおりです。

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
            let label = UILabel(frame: CGRect(x:0, y:150, width: tableView.bounds.width, height: 100))  //位置・サイズが無効 何故か???????????

            // 文字位置
            label.textAlignment = NSTextAlignment.Center

            // 文字サイズ
            label.font = UIFont.boldSystemFontOfSize(28)

            // 背景色
            label.backgroundColor = UIColor.blackColor()

            // 文字色
            label.textColor =  UIColor.whiteColor()

        //表示される文字
                     if selectedIndexPathInViewController.row == 0 {
                label.text = "動画:動画の見方"

            } else if selectedIndexPathInViewController.row == 1 {
                label.text = "動画:電話"

            } else if selectedIndexPathInViewController.row == 2 {
                label.text = "動画:カレンダー"


            } else if selectedIndexPathInViewController.row == 3 {
                label.text = "動画:カメラ・ビデオ"
            } else if selectedIndexPathInViewController.row == 4 {
                label.text = "動画:テキストの見方"

            } else if selectedIndexPathInViewController.row == 5 {
                label.text = "テキスト:テキスト見方"
            } else if selectedIndexPathInViewController.row == 6 {
                label.text = "テキスト:初心者の頁"


            } else if selectedIndexPathInViewController.row == 7 {
                label.text = "テキスト:用語の説明"


            } else if selectedIndexPathInViewController.row == 8 {
                label.text = "テキスト:応援者の頁"

            } else {
                label.text = "?????"
            }
            //

            return label
        }

    //表のlabel1及びlabel2の文字を表示させる    

            func tableView(tableView: UITableView, numberOfRowsInSection section:Int) -> Int {
                return texts[selectedIndexPathInViewController.row].count
            }


            func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


                //teratailTake One さんのコメントアドバイスにより修正
                //var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? CustomCell


                let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomCell
                cell.label1.text = texts[selectedIndexPathInViewController.row][indexPath.row]

               //一段目のために選ばれた行番号をプリントする
                print("タップされた 1段用 インデックスパス:\(indexPath.row)")
                cell.label2.text = subtexts[selectedIndexPathInViewController.row][indexPath.row]

                //二段目のために選ばれた行番号をプリントする
                 print("タップされた 2段用 インデックスパス:\(indexPath.row)")

                return cell
                }

上記コードで  文字位置  文字サイズ  背景色 文字色はコードどおりに表示されます。しかし、コードの最初で設定したlabel位置およびサイズはコードの数字を変えても反映されません。

なお、第2画面のセルのlabel1およびlabel2の幅と位置はCustomCell.xibで設定をしています。

ご参考事項
AAA 
iMac27 OS-X11.4 El Capitan 
Xcode 7.3.1
Swift2

BBB 
前の質問で教えて頂いた上下2枚のlabelを表示する第2画面は上記の第2図のとおりできました。改めて御礼申し上げます。下段の文字数が長いときは自動で改行もされます。これはCustomCell.xibでAutoLayoutを設定をしています。

CCC
その他、第3画面に遷移してWebViewを表示する方法について、別途質問をさせて頂きます。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

viewForHeaderInSectionを実装してセクションヘッダーにラベルを表示しているのであれば、sectionHeaderHeightにセクションの高さを設定するか、heightForHeaderInSectionを実装するかしないとセクションの高さは変わりません。
(参考)
http://qiita.com/mochizukikotaro/items/f37241163e85e058ce4a

セクションのタイトルというよりも、テーブルのタイトルを表示しているのであれば、セクションヘッダーでなくテーブルヘッダーにラベルを表示する手もあると思います。
(参考)
http://qiita.com/himara2/items/f10cb346d06f2b33a241

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/16 22:17

    早速ありがとうございました。明日やってみます。

    キャンセル

  • 2016/06/17 10:14

    下記のコードで最後の1行を加えることで黒帯の幅が調整できました。ありがとうございました。

    // テーブルビューのタイトルを表示
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let label = UILabel(frame: CGRect(x:0, y:150, width: tableView.bounds.width, height: 100))
    tableView.sectionHeaderHeight = 45 //teratailで教わりラベルの帯の高さを設定

    なお、tableHeaderViewを使う方法は、別途勉強します。

    キャンセル

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

  • ただいまの回答率 88.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • トップ
  • Swift 2に関する質問
  • テーブルビューに2段のラベルを設けてテキストを表示する方法⇒04 第2画面のタイトルの幅を調整する方法