web-dev-qa-db-ja.com

UIButtonのカスタムクラスをGIDSignInButtonに変更できません

Googleサインイン機能をカスタムボタンに追加しようとしています this チュートリアルに従っています。ボタンを選択し、そのクラスをGIDSignInButtonに設定して、次のコードを追加するように指示しています:@IBOutlet weak var signInButton: GIDSignInButton!

ただし、クラスをGIDSignInButtonに設定することはできません。入力してEnterキーを押すと、フィールドがクリアされます。

enter image description here

15
sinio

回避策storyboardテキストモードで開いて直接配置します。 interface builderに戻ると、正常に表示されます。

2
Haroldo Gondim

UIButtonを作成し、そのアクションメソッドで、Google経由で署名するための次のコードを記述できます。

    GIDSignIn.sharedInstance().signIn()

それは私のために働きます、このようにあなたはあなたの要件に従ってUIButtonをカスタマイズすることができ、またグーグルを使用してサインインを実行することができます

6
H S Progr

これは、GIDSignInButtonがUIButtonではなくUIViewのサブクラスであるためです。ストーリーボード/ nibに通常のUIViewを追加し、代わりにそのクラスをGIDSignInButtonに変更します。

google doc から:

GIDSignInButtonをストーリーボード、XIBファイルに追加するか、プログラムでインスタンス化します。ボタンをストーリーボードまたはXIBファイルに追加するには、Viewを追加し、そのカスタムクラスをGIDSignInButtonに設定します。

5
nrx

オブジェクトライブラリのボタンオブジェクトではなく、ビューオブジェクトにGIDSignInButtonを割り当ててみてください

それは私にとって仕事です。

4
  1. ソースコードとしてストーリーボードを開きます。
  2. Xmlでボタンを見つけます。
  3. CustomClass = "GIDSignInButton"をボタンタグの属性として設定します。
  4. インターフェイスビルダーとしてストーリーボードを開きます。

これで、ボタンをIBOutletにリンクできます

2

GIDSignInButtonは、UIViewまたはUIButtonを使用して設定できます。

GIDSignInButtonをUIButtonとして使用している場合

  1. ストーリーボードをソースコードとして開く
  2. 結果のXMLでボタンを見つけます
  3. 以下のコードをボタンタグの属性として追加します

    customClass="GIDSignInButton"

4. storyboardを再度Interface Builderとして開くと、ボタンクラスが変更されます

GIDSignInButtonをUIViewとして使用している場合

1. Identity InspectorにカスタムクラスをGIDSignInButtonとしてコピーして貼り付けます。2番目は、私の考えでは正しいアプローチです。

1
Suraj K Thomas

簡単な方法は、ボタンアクションを作成し、それに次の行を貼り付けるだけです。

   @IBAction func gSignInAction(_ sender: Any) {
         GIDSignIn.sharedInstance()?.signIn()
    }
1
Talha Rasool

数か月前にも同じ問題がありました

あなたのコードは正しいようです

@IBOutlet weak var signInButton: GIDSignInButton!

しかし、問題は

•フレームワークが適切に追加されていない(左側のナビゲーターでプロジェクト設定に移動し、[ビルドフェーズ]をクリックして、フレームワークとSHIFT + CMD + Kを追加します)

•または、代わりに、@ IBOutletをSwiftファイルに書き込んでから、ボタンをドラッグして割り当てます

•最後のオプションは、xcodeを閉じるか、派生データを削除することです

Xcode自体には多くのバグがあります。それがあなたの問題かどうかはわかりませんが、Xcodeの問題です

お役に立てれば!

1
excitedmicrobe

UIButtonの代わりにUIViewを使用する場合、ビューにGIDSignInButtonのカスタムクラスを割り当てることができます。そこから、下に示すように、ビューをボタンアウトレットとアクションに接続できます。

@IBOutlet weak var googleLoginButton: GIDSignInButton!

  @IBAction func googleLoginButtonPressed(_ sender: Any) {
    GIDSignIn.sharedInstance()?.signIn()
}
1
Mat Christensen

スイフト-5

Open storyboard as source code.
Locate the button in the xml.
Set customClass="GIDSignInButton" as an attribute for the button tag.
Open storyboard as interface builder.

//MARK:- You will not find this with button XML Forcly Add this (customClass="GIDSignInButton")[![enter image description here][1]][1]
0
Shakeel Ahmed