2017-06-14 6 views
-2

私の最初のビューコントローラでは、私はセグメント化されたコントロールを持っています。私は、2番目のビューコントローラからセグメント化されたコントロールの選択された部分のタイトルの文字列値を取得しようとしています。誰でもこれを行う方法について考えている?前もって感謝します!別のクラスからセグメント化されたコントロールの選択された部分のタイトルにアクセスするには?

+0

は、誰も私に言うことはできますか? – Skytect

答えて

0

コードは書かれていませんが、これは現在の表示コントローラのシナリオであり、addchildviewcontrollerまたはaddsubviewではないと想定しています。その場合は、たくさんの方法があります。ここには2つあります。

1)セグメント化されたコントロールの状態を検出するグローバル変数を作成します。

@IBOutlet weak var segContoll: UISegmentedControl! 
func back() { 
globalvar = segContoll.titleForSegment(at: segContoll.selectedSegmentIndex) 
} 

2)プロトコルを作るには、ここではそれがどのように見えるかです:

protocol NotifyDelegate { 
    func collectionViewSelectedIndex(indexPath : Int) 
} 

class CollectionViewForSessions: ... { 
    var delegate: NotifyDelegate? 
func ... { 
//The nextview delegate 
    sessionCollection.delegate = self 
} 
    func ... { 
//Instead of inputing a number, customize it to input a string segContoll.titleForSegment(at: segContoll.selectedSegmentIndex) 
     delegate?.collectionViewSelectedIndex(indexPath: indexPath.row) 
    } 
} 

class MessagesWithPerson: NotifyDelegate { 
    func collectionViewSelectedIndex(indexPath: Int) { 
    } 
} 
票がダウンしている理由
+0

'globalvar'を使うのではなく、単にクラス、構造体またはプロトコルの外に変数を宣言するだけで、グローバル変数を宣言することになっているはずです。また、クラス外のグローバル変数を宣言すると、 "インスタンスメンバー 'nameOfSegControl'を 'viewControllerSegControlIsIn'型で使用できないというエラーメッセージが表示されます。 – Skytect

+0

元のメッセージは青写真として認識されていました。あなたのクラスの外でこれを実装するには 'var yourString:String!'を作成し、それをバック関数に代入します。ここで 'segContoll.titleForSegment(at:segContoll.selectedSegmentIndex)' –

関連する問題