barButtons を追加するときにいくつかの問題に遭遇し、別の質問への回答で解決策を見つけましたが、同じスコープでボタンを作成して追加する必要がある理由を説明していませんでした。クラス レベルでボタンを作成して、viewDidLoad などのメソッドに追加できない理由を知りたいです。以下にコピーされたその質問から機能しないコード例:
let rightButton = UIBarButtonItem(title: "Right", style: .plain, target: self, action: #selector(onRightClick))
let leftButton = UIBarButtonItem(title: "Left", style: .plain, target: self, action: #selector(onLeftClick))
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.rightBarButtonItem = rightButton
navigationItem.leftBarButtonItem = leftButton
}
これにより、@objc メソッド (ここには含まれていません) を認識できないエラーが発生します。ボタンの作成をviewDidLoad内に移動すると、エラーが消えてコードが機能するため、これらのメソッドに問題はありません。