【XCode】TableViewのCellをカスタマイズする

環境

  • MacBook Air M1
  • OS : 11.2(20D64)
  • XCode : 12.4
  • Swift : 5.3.2

参考

1. 新規ファイル追加でCocoa Touch Classを選択

新規作成

2. 作成時の設定

  • Class : 好きな名前(今回はCustomTableViewCell)
  • Subclass of : UITableViewCell
  • Also create XIB file : ON
  • Language : Swift

作成時オプション

2つの新規ファイルが生成されればOK
作成済みチェック

3. CustomTableViewCell.xibを編集

Cellにラベルを追加

ラベル追加

Rostoration IDの設定

任意の文字列でいい(セル生成時に使用する)
Identifier

4. CustomTableViewCell.swiftでラベルの参照を設定

ラベル参照

5. Main.storyboardを編集

Table Viewを追加
TableVIew

6. ViewController.swiftを編集

Main.storyboardで指定した、Table Viewの参照を設定

  • 参照時の変数名を今回はTableViewとする

TableView参照

viewDidLoad()に追記

  • UITableViewに対して、delegateと使用するCellの情報を設定
    • TableView.register : 使用するカスタムセルの情報を登録
      • nibName = 作ったCellのクラス名
      • forCellReuseIdentifier = xibで指定したidentifier名
    • TableView.delegate :
    • TableView.dataSorce :
1
2
3
4
5
6
7
8
9
10
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.

// ここから
TableView.register(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "CustomCell")
TableView.delegate = self
TableView.dataSource = self
// ここまで
}

UITableViewDelegate,UITableViewDataSourceを継承

  • どちらのメソッドも、optionalなので、最低限のメソッドの定義をすれば、他のメソッドは定義しなくてもいい
  • UITableViewDelegate : TableView内のデータが選択や生成、編集されたときに呼び出されるメソッドが定義されたプロトコル群
  • UITableViewDataSource : テーブルに表示させたいデータを設定するためのプロトコル群
1
2
3
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
...
}

継承すると、エラーが出るはずなので、Fixをクリックしてメソッドを2つ自動生成してもらうと、以下のようなメソッドが自動生成されるはず

1
2
3
4
5
6
7
8
9
10
11
//	UITableViewDelegateの継承によって生成された
// TableViewに生成するセル数を設定する(Int型を返す)
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
Code
}

// UITableViewDataSourceの継承によって生成された
// TableViewに表示するセルのデータを設定する(UITableViewCellを返す)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
Code
}

今回は、生成するセルを10個、表示するデータを各セルを上から数えたときの番号にする

1
2
3
4
5
6
7
8
9
10
11
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell",for: indexPath) as! CustomTableViewCell

cell.Label.text = String(indexPath.row)

return cell
}

実行した結果

完成

ViewController.swiftの完成形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import UIKit

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {


@IBOutlet weak var TableView: UITableView!

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell",for: indexPath) as! CustomTableViewCell

cell.Label.text = String(1)

return cell
}


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
TableView.register(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "CustomCell")
TableView.delegate = self
TableView.dataSource = self
}


}

【Git】タグの扱い方

タグはなんのためにあるのか

コミットを指定するためにSHA 1IDを使用するが、毎回選択するのは面倒くさいし間違える可能性があるので、よく使う可能性のあるコミットに命名することで、いちいちSHA 1IDを指定しなくてよくできる

コミットにタグを追加する

タグをつける

1
git tag タグ名 タグをつけたいSHA1

タグをつけるときは、-mスイッチを使用すればメッセージをつけることもできる

1
git tag タグ名 -m "コメント" タグをつけたいSHA1

タグを消去する

1
git tag -d タグ名

これが表示されれば成功

1
Deleted tag 'タグ名' (was SHA1)

タグの一覧を表示する

1
git tag

【Kotlin】View内のコンポーネントの取得方法

Javaっぽく取得する

データバインディングというらしい?

1
2
3
4
5
6
7
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// コンポーネントに設定したID(textView)からTextViewを取得する
val textView = findViewById(R.id.textView) as TextView
}

Kotlinっぽく取得する(Kotlin Android Extensions使用)

Kotlin Android Extensions

Kotlinが公式で提供している、Androidアプリ開発をサポートしてくれる拡張機能
https://archive-blog.yagi2.dev/2017/10/18/good-bye-findviewbyid.html

1
2
3
4
5
6
7
8
9
10
11
// Inportする必要がある
// <layout>には取得したいLayoutXMLの名前を指定
import kotlinx.android.synthetic.main.<layout>.*

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// 後はViewないで指定した、コンポーネントのIDから呼び出せる
textView.text = "テストだよ"
}

【Ubuntu】キーボードの初期設定

Ubuntu Serverで使用するキーボードレイアウトを日本語配列に変更する

  1. sudo dpkg-reconfigure keyboard-configurationを入力
    1
    $ sudo dpkg-reconfigure keyboard-configuration
  • dpkg-reconfigure : 指定したDebianパッケージがdebconfを採用している場合に、パッケージの再設定をすることができるコマンド
    • debconfに対応しているリストはls /var/lib/dpkg/info/*.configでみることができる
  • keyboard-configuration : キーボードのレイアウト設定ファイル

ここからは矢印キーとEnterキーで操作する(GUI風になる)

  1. Generic 105-key (Intl)PCを選択
    2

  2. Japaneseを選択
    3

  3. Japaneseを選択
    4

  4. /etc/default/keyboardの設定を書き換えている場合表示される

  • キーボードオプションを維持する場合はYesを選択、初期化していい場合はNoを選択
    5
  1. 「The default for the keyboard layout」を選択
    6

  2. 「No compose key」を選択するとコンソール画面に戻る
    7

  3. コンソール画面が表示され必要んな情報を生成してくれるので少し待つ(ネットワークが必要?)

    1
    2
    3
    4
    5
    6
    7
    Your console font configuration will be updated the next time your system
    boots. If you want to update it now, run 'setupcon' from a virtual console.
    update-initramfs: deferring update (trigger activated)
    Processing triggers for initramfs-tools (0.137ubuntu12) ...
    update-initramfs: Generating /boot/initrd.img-5.8.0-1006-raspi
    ....

  4. 入力待機画面に戻れば成功

「Caps Lock」を「Ctrl」に変更する

/etc/default/keyboardXKBOPTIONSに以下を書き加える

  • デフォルト

    1
    XKBOPTIONS=""
  • 書き換え後

    1
    XKBOPTIONS="ctrl:nocaps"

【Shell】コマンドラインのカーソル移動

矢印キーを使用しないカーソルの移動

  • が現在カーソルのある位置
コマンド 動作解説 動作前 動作後
Ctrl + a 行の先頭にカーソルを移動 cd ~/Deskctop□/test/ □cd ~/Deskctop/test/
Ctrl + e 行の末にカーソルを移動 cd ~/Deskctop□/test/ cd ~/Deskctop/test/□
Ctrl + k カーソルの右側を全て消去 cd ~/Deskctop□/test/ cd ~/Deskctop□
Ctrl + h カーソルの左側にある文字を消去 cd ~/Deskctop□/test/ cd ~/Deskcto□/test/
Ctrl + d カーソルの右側にある文字を消去 cd ~/Deskctop□/test/ cd ~/Deskctop□test/
Ctrl + u コマンドラインの文字を全て消去 cd ~/Deskctop□/test/
Ctrl + y Ctrl + kで消去した文字列を貼り付け

コマンドの履歴を使用する

  • 矢印キーの上下(↑,↓)で一つ前のコマンド、一つ後のコマンドを呼び出せる。

  • 履歴を見たい場合は、historyコマンドでみることのできる

    • 履歴番号 コマンド
      1
      2
      3
      4
      5
      6
      7
      $ history
      679 ls
      680 vim ~/.zshrc
      681 source ~/.zshrc
      682 ZDOTDIR
      683 $ZDOTDIR
      684 echo $ZDOTDIR
  • 行番号を指定して実行する

    • !履歴番号
    • 行番号のコマンドがコマンドラインに入力される
      1
      2
      3
      $ !679

      $ ls

【VSCode】開いたテキストが文字化けするときの対処法方

設定の「自動文字コード識別設定」をONにする

1. Settings画面を開く

Code -> Preferences -> Settingsの順でSettings画面を開く

- `Cmd + ,(カンマ)`でも開ける

Settings

2. 自動文字コード識別設定を探す

検索欄から、「autoGuessEncoding」を検索

Search

3.「Files:Auto Guess Encoding」にチェックを入れる

再度ファイルを開き直せば、文字化けが解消されているはず

【Zsh】Zsh拡張フレームワーク「Prezto」

参考

インストール方法

1. Zshを起動する

1
$ zsh

2. リポジトリをクローンする

  • ${ZDOTDIR:-$HOME}とは?
    • $ZDOTDIR : .zshrcの保存場所を設定する環境変数
    • $HOME : ホームディレクトリ
    • :- : 左辺の値が設定されていor空文字列であれば、右辺に設定されてる値が使用される
      1
      $ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

3. 今まで使っていた設定ファイルを移動させる

1
$ mkdir zsh_orig && mv zshmv .zlogin .zlogout .zprofile .zshenv .zshrc zsh_orig

4. 各コンフィグファイルへのシンボリックリンクを作成する

1
2
3
4
$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

5. zshをデフォルトシェルに設定

  • chsh : ログインシェルを変更する
    1
    $ chsh -s /bin/zsh

テーマの設定

テーマ一覧を見てみる

1
$ prompt -s

テーマを設定する

1
$ prompt -s テーマ名

Macの場合

prompt -sだと、そのセッションではテーマが変更されるが、再起動ログインし直すとデフォルトのテーマになってしまうので、設定~/.zshrcに追記しておく必要がある

1
2
3
4
5
6
7
$ prompt -s powerline
Set and save not yet implemented. Please ensure your ~/.zshrc
contains something similar to the following:

autoload -Uz promptinit
promptinit
prompt powerline

powerlineを使用する場合、特殊なフォントが必要

  1. 以下GitHubのリポジトリをダウンロード
    https://github.com/powerline/fonts
  • 適当なディレクトリに移動後
    1
    git clone https://github.com/powerline/fonts.git
  1. install.shを叩く

    1
    2
    $ cd fonts
    $ ./install.sh
  2. 使用しているターミナルでフォントを設定

  • 文字列にPowerlineが入っていれば使えるはず

【Git】コマンドラインの構文

コマンドラインの構文の概要

  • git : 必須
  • [スイッチ] : オプション
  • <コマンド> : オプション
  • <引数>: オプション
    1
    git [スイッチ]<コマンド><引数>

ヘルプにも同じような構文の記述がされている

1
2
3
4
5
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
コマンド 説明 参考
—version バージョン確認
—help 概要と最も一般的に使用されるコマンドのリストを出力
-C カレントディレクトリではなくに指定したディレクトリでGit実行する
-c = 設定ファイルのに指定した項目の値をで設定した値を上書きする
—exec-path[=] Gitのコアファイルのパスを出力する。パスを設定することもできる。
—html-path ドキュメントファイルの補完されているパスを出力する
—man-path Gitのmanファイルが格納されているパスを出力する
—info-path Gitのドキュメントを文書かしたファイルがあるパスを出力する(私の環境ではパスは表示されたが、パスが存在しなかった)
-P \ —paginate ページャーに出力をパイプする
-p \ —no-paginate ページャーに出力をパイプしないようにする
—no-replace-objects Gitオブジェクトを置換しない https://git-scm.com/docs/git-replace
—bare ベアリポジトリとして扱う https://qiita.com/devzooiiooz/items/56a02342d9d65d79f6c3
https://cpplover.blogspot.com/2015/04/git10linus-torvals.html
—git-dir= リポジトリへのパスを設定する(環境変数 GIT_DIR を設定するのと同じ)
—work-tree= 作業ツリーへのパスを設定する(環境変数 GIT_WORK_TREE や設定変数 core.worktree を設定するのと同じ)
—namespace= Gitの名前空間を設定する(環境変数 git_namespace を設定するのと同じ)

ダッシュ(-)1個とダッシュ(—)の使い分け

  • 1つ(-) : 1文字のスイッチ(省略型)
  • 2つ(—) : 略さずに完全に記述する長いスイッチ

【Git】管理されているファイル情報をみる

リポジトリで「管理されている」ファイルのリストを取得する

ls-filesコマンドの-cオプションを使用する

ls-filesはデフォルトで-cオプションがついている

-c, —cached

Show cached files in the output (default)

実行結果例

1
2
3
4
5
6
% git ls-files 
1
2
3
4
aaa

リポジトリで「管理されていない」ファイルのリストを取得する

ls-filesコマンドの-oオプションを使用する

-o, —others

Show other (i.e. untracked) files in the output

実行結果例

1
2
3
% git ls-files -o
5
bbb

【CSS】マージン・パディング・ボーダーについて

マージンについて

  • マージンとは日本語で余白
  • 要素の一番外側に位置する領域を意味する
  • background-colorを設定している場合、色の領域は広がらない

    マージンとマージンは相殺する

    margin-bottom:20pxmargin-top:30pxが上下に並んでいる場合、2つの要素の距離は2つの値を足した50pxにはならず、重なった部分のマージンは重なったままになるので、結果は30pxのマージンが取られた状態になる

記述する値によって設定できるマージンが変わる

  1. 1つの値を設定する
    • 上下左右のマージンが同じだけ設定される
      1
      2
      <!-- 上下左右全て100px分のマージンが設定される -->
      margin: 100px;
  2. 2つの値を設定する
    • 上下左右のマージンが別々に設定される
      1
      2
      <!-- 上下:100px,左右:50pxのマージンが設定させる -->
      margin: 100px 50px;
  3. 3つの値を設定する
    • 左右のマージンが別々に設定される
      1
      2
      <!-- 上:100px,左右:50px,下200pxのマージンが設定される -->
      margin: 100px 50px 200px;
  4. 個別に値を設定する
    • 上の3つとは少し記述の仕方が変わっる
      1
      2
      3
      4
      5
      <!-- 明示的に設定する -->
      margin-top: 100px;
      margin-right: 100px;
      margin-bottom: 50px;
      margin-left: 100px;

パディングについて

  • マージンの1つ内側の余白を設定する
  • background-colorを設定している場合、色の領域も広がる

width属性とpadding

-width属性はpaddingのピクセル数に対する値ではなく、画面に対する値を設定している

- なので、`padding`を広げても文字は広く表示されない

記述する値によって設定できるパディングが変わる

  1. 1つの値を設定する
    • 上下左右のパディングが同じだけ設定される
      1
      2
      <!-- 上下左右全て100px分のパディングが設定される -->
      padding: 100px;
  2. 2つの値を設定する
    • 上下左右のパディングが別々に設定される
      1
      2
      <!-- 上下:100px,左右:50pxのパディングが設定させる -->
      padding: 100px 50px;
  3. 3つの値を設定する
    • 左右のパディングが別々に設定される
      1
      2
      <!-- 上:100px,左右:50px,下200pxのパディングが設定される -->
      padding: 100px 50px 200px;
  4. 個別に値を設定する
    • 上の3つとは少し記述の仕方が変わっる
      1
      2
      3
      4
      5
      <!-- 明示的に設定する -->
      padding-top: 100px;
      padding-right: 100px;
      padding-bottom: 50px;
      padding-left: 100px;

ボーダーについて

  • マージンとパディングの境界線の設定ができる

記述する値によって設定できるボーダーが変わる

  1. 3つの値を設定する
    • 線の太さ線の色線の種類を設定する
      1
      2
      <!-- 線の太さ:1px,線の色:黒,線の種類:実線-->
      border: 1px black solid;
  2. 各要素を別々にかつ、上下左右を変えて設定できる

    • 設定方法が細かくあるので、参考リンクだけを紹介する

      w3schools border-style

      ブラウザのデフォルトのマージンやパディングを無効にする

      1
      2
      3
      4
      5
      <!-- bodyタグに対して設定する -->
      bodu{
      margin: 0;
      padding: 0;
      }