71322
swiftで別storybordからコピー&ペーストしたコードについたコネクト接続の解除をするにはコード上の丸をどのようにしたらいいですか？
IF側は表示できません
CC BY-SA 4.0
2020-10-19T01:42:24.020
71309
2020-10-20T07:00:39.660
2020-10-19T08:25:14.000
18540
39481
question
swift xcode
swiftで別storybordからコピー&ペーストしたコードについたコネクト接続の解除
**コードエディタと、Storyboardの間のコネクション（Connection）を解除する方法。**

このようにご質問の趣旨を理解させていただいた上で、回答をします。もしそういう趣旨でないのであれば、コメントでお知らせいただくか、質問文を編集して、お書き換えください。

* * *

コネクション解除の方法を、ふたつ説明します。  
最初は、Connections Inspectorを使用します。

接続しているオブジェクト（UILabel、UIImageView、UITableViewなどなど）を選択して、Connections
Inspectorを開きます。下図のようにコネクションが表示されますので、✖︎アイコンをクリックして、接続を解除します。

[![画像の説明をここに入力](https://i.stack.imgur.com/w6hfP.png)](https://i.stack.imgur.com/w6hfP.png)

次は右クリック（Controlキー＋クリック）を使ったものです。

[![画像の説明をここに入力](https://i.stack.imgur.com/S2yBz.png)](https://i.stack.imgur.com/S2yBz.png)

接続を解除したいオブジェクトを右クリックすると、Connections Inspectorと同じ小窓が開きますから、それで同様に解除します。

* * *

以上、接続の解除は、いずれもStoryboard上で行います。接続を行う時、Storyboardとコードエディタのペインを開いて、操作するので、なんとなくコードエディタでも接続解除できそうな気になりますが、それはできないようです。それは考察を加えてみるとわかります。コード上の`@IBOutlet`や`@IBAction`とStoryboardのオブジェクトの接続情報は、プロジェクトのどこに書き込まれて保存されるのか？すこし調べてみます。  
Project NavigatorのStoryboard書類を、右クリック（Control + クリック）してプルダウンメニューを出し、「Open as
Source Code」を選びます。

[![画像の説明をここに入力](https://i.stack.imgur.com/EVkul.png)](https://i.stack.imgur.com/EVkul.png)

Storyboard書類の実体が、XML形式のファイルであることがわかります。その一部を抜粋すると……

```

    <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="GestureTest" customModuleProvider="target" sceneMemberID="viewController">
        <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
            <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
            <subviews>
                <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" fixedFrame="YES" image="Baseball.png" translatesAutoresizingMaskIntoConstraints="NO" id="VMj-nc-WUJ">
                    <rect key="frame" x="143" y="384" width="129" height="129"/>
                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                </imageView>
            </subviews>
            <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
        </view>
        <connections>
            <outlet property="imageView" destination="VMj-nc-WUJ" id="6Vr-Aw-kRh"/>
        </connections>
    </viewController>
    
```

`<connections>`タグが含まれ、接続の情報が記述されているのを、見つけることができます。このことから、プロジェクト内の接続の情報は、Storyboard書類に記述され、保存されていることがわかりました。

コードエディタ上で、`@IBOutlet`のプロパティあるいは`@IBAction`のメソッドが接続状態になっているのに、対象となるStoryboard書類がないということがありえないということも、このことからわかります。一見Storyboard書類がないと思えても、探せば見つかるはずです。  
探し方はかんたんです。  
コードエディタ上の、接続状態を示す◉アイコンを、Command + クリックしてください。

[![画像の説明をここに入力](https://i.stack.imgur.com/4FfFN.png)](https://i.stack.imgur.com/4FfFN.png)

小窓に、対象のStoryboard書類と、対になるオブジェクトが表示され、それをクリックすると、Storyboard書類が開きます。
CC BY-SA 4.0
2020-10-19T07:36:15.870
71322
2020-10-20T07:00:39.660
2020-10-20T07:00:39.660
18540
18540
71309
answer