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

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

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

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

Swift

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

Q&A

解決済

2回答

1700閲覧

エラーコード Global 'var' declaration requires an expression or getter/setter specifier

NamaKori

総合スコア81

Xcode

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

Swift

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

0グッド

0クリップ

投稿2017/01/06 12:34

編集2017/01/08 09:06

イメージ説明

左から数えて三つ目が投稿画面です。
イメージ説明
ViewControllerに五つのclassを用意しています。この方法は正しいでしょうか?
イメージ説明

classの画像

エラーした時

コンソール1
イメージ説明
コンソール2
イメージ説明
コンソール3
イメージ説明
コンソール4
イメージ説明

textviewの入力前のテキストフィールドに薄いグレーの文字を表示したいのですが、このコードではエラーが発生します。エラーを翻訳しましたが、イニシャライザをどうすればよいかわかりません、

コードを書くのは苦手で、どこに何を書いたらいいのか、わかりません、アドバイスお願いします。

イメージ説明

class ViewController3 {
@IBOutlet weak var TextView: UITextView!

}
var TextView: UITextView
TextView.placeholder = "ここに入力してくださいn"
TextView.borderStyle = UITextBorderStyle.RoundedRect
self.view.addSubview(TextView)

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

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

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

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

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

guest

回答2

0

ベストアンサー

いろいろ修正したほうがよいところがありますが、、、以下のようにするとエラーはなくなります。

UITextViewには.placeholderというプロパティはありませんので使用できません。

TextViewという名前も@IBOutletで宣言したものとダブっているので名前を変更してください。

変数が初期化されていないと言うエラーは初期化すればよいです。

swift

1import UIKit 2 3class ViewController3: UIViewController { 4 5 @IBOutlet weak var TextView: UITextView! 6 var textField = UITextField() 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 11 textField.placeholder = "ここに入力してくださいn" 12 textField.borderStyle = UITextBorderStyle.roundedRect 13 self.view.addSubview(textField) 14 } 15}

投稿2017/01/06 13:09

編集2017/01/06 13:20
_Kentarou

総合スコア8490

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

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

fromageblanc

2017/01/06 14:03

その他もろもろはおいといて、TextViewはクラス内と外だから大丈夫ですよ。
_Kentarou

2017/01/06 14:25

外にあることも修正した方がよいと思いますよ、addSubviewしているのにグローバルに書いてあるし。
fromageblanc

2017/01/06 14:52

無条件で同じ変数名が使えないと勘違いしないでしょうか?質問者さんは初学の方だと思われますが。
_Kentarou

2017/01/06 22:53

> 質問者さんは初学の方だと思われますが。 なので一般的な書き方(エラーのない)を記載しました。 var TextView:UITextView?ではその部分のエラーしか解決せず、まだかなりのエラーが出ます。
NamaKori

2017/01/07 04:46

みなさん本当にありがとうございます。 もっと基礎を固めてから、質問をした方がいいですよね、
_Kentarou

2017/01/07 04:55

namakoriさん、今回の場合は指摘する部分以外にもエラーが多数ありましたので、、、基本的なことから頑張ってみてください。
NamaKori

2017/01/07 05:08

http://tea-leaves.jp/swift/content/swift このサイトは重要なことが詳しく書かれていて、重宝しているのですが、このサイトで十分でしょうか? _Kentarouさんのように、ここが間違っていると気づけるようになるためには、どのようなことをすればいいのでしょうか?
_Kentarou

2017/01/07 05:26

現在はSwift3になっているのでそのサイトは古い記述がありますね、そこを分かって自分で変換して進めていけるのであれば問題ないと思います。 Swift3で勉強するのなら以下の本が基本から載っていて、なおかつ現在はkindle版が安いのでおすすめです。 https://www.amazon.co.jp/exec/obidos/asin/4800711487/mushikago08-22/
NamaKori

2017/01/07 05:52

そうでしたか、自分で変換するなんて今の自分には難しいです。 一度挫折した本が既にあるので基本をサイトの方で少し学んでから、本の方をもう一度取り組みたいと思います。 あと、訂正をしてくださったコードを試してみて無事エラーをなくすことができました。 しかし、ビルドをした時、Thread1.signal SIGABRT エラーで動作を確認することができませんでした。関連付けに問題があるということはわかるのですが、どこが問題なのかわかりません。
_Kentarou

2017/01/07 06:02

@IBOutlet weak var TextView: UITextView!のところだと思いますよ。 ここにはそれしかIBOutletがないので、一度接続を切ってからつなげてください。
NamaKori

2017/01/07 17:15

以前にも同じようなことが起きて、接続を切っても今回はうまくいきませんでした。 再起動しても無理でした、どうすればいいですか?
_Kentarou

2017/01/07 22:48

一旦そのクラスのコードを載せてください。 あとコンソールにエラーログがある場合それも全て載せてください。
NamaKori

2017/01/08 05:33

class、エラー時の画像、 コンソールに問題はないと思いますが、一応貼っときました。
_Kentarou

2017/01/08 05:42 編集

エラー内容から見るとTextFieldxの接続が正常でないみたいです。 それとStoryboardのViewControllerのクラスをViewController3にしていますか?
NamaKori

2017/01/08 06:49

tabBarControllerを使って五つの画面を移動できるようにしていて、左から数えて3番目なので、ViewController3と名付けたのですが、このやり方は間違っているのでしょうか? つまり、画面一つに対して一つずつclassを用意したわけです。 上に貼っておきたいと思います。
_Kentarou

2017/01/08 06:57

それに関しては問題ないと思います。
NamaKori

2017/01/08 07:17

原因が見つかりません、関連付けなどをせずに、コードで部品を呼び出す方法に切り替えようかな
NamaKori

2017/01/08 07:51

ありがとうございます!! エンターを押たら、きちんと投稿画面に移動できるようになりました! しかし、コードの動作を確認することができませんでした。 上でコードを書いてくださったコードの解説をお願いできますか?
_Kentarou

2017/01/08 07:55

コードの説明というか、エラーを出ないように修正しただけです。 UITextViewでプレースホルダが使えないのでとりあえずUITextFieldにしたという流れです。
NamaKori

2017/01/08 08:58

class ViewController3: UIViewController { @IBOutlet weak var TextFieldx: UITextField! @IBOutlet weak var TextViewx: UITextView! override func viewDidLoad() { super.viewDidLoad() TextFieldx.placeholder = "タイトル" } } このコードに書き直しをしたら動作を確認することができました! ありがとうございました。
guest

0

とりあえず?か!つけちゃえば。

swift

1var TextView:UITextView?

投稿2017/01/06 12:41

fromageblanc

総合スコア2724

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問