2012-05-01 13 views
2

UIButtonから次のUITtableviewcontrollerにStringを送信すると、その文字列はUIButton Title(Monday ... Sunday)です。この文字列はNSPredicateによってテーブル情報をフィルタリングするために使用されます。日ごとに。prepareForSegueを使用してUIButtonから文字列を渡す方法

@property (nonatomic, weak) NSString *dayOTW; 

- (IBAction)selectDay:(UIButton *)sender { 
UIButton *dayW = sender; 
dayOTW = dayW.titleLabel.text; 
NSLog(@"button press = %@", dayOTW); 
} 

2012-05-01 06:23:21.731 passingdata[99957:fb03] button press = Monday 

そして、私の次の画面

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
// Make sure your segue name in storyboard is the same as this line 
if ([[segue identifier] isEqualToString:@"SendWeekDay"]) 
{ 
    // Get reference to the destination view controller 
    ViewController *vc = [segue destinationViewController]; 

    // Pass any objects to the view controller here, like... 
    vc.dayOTW = dayOTW; 
    } 
} 

私が行けば、私は、私のテーブルに情報が表示されていないボタンを選択するには、最初の時間にセグエ戻って、そのダの正しい情報で私のテーブルのショーをもう一度ボタンを選択してくださいy。

私は間違っているのですか?

もう1つ質問があります。 私は毎週7つのUIButtonsを1週間に1つ持っていますが、どのようにして1つのセグのすべてのUIButtonsからセグをすることができますか?

おかげ

+0

質問タイトルを編集してより具体的にすることはできますか? –

+0

タイトルが変更されました。 :) – HernandoZ

+0

この回答を見る:http://stackoverflow.com/a/31934786/3681880 – Suragch

答えて

4

セグエは、変数が最初に設定されていないので、あなたはそれをクリックし、お使いのIBActionメソッドの前に呼び出されています。

segueがボタンに接続されている場合は、prepareForSegueにsenderとなるため、実際にはアクションメソッドは必要ありません。ただ、prepareForSegueでタイトルを取得:

UIButton *dayButton = (UIButton*)sender 
vc.dayOTW = sender.titleLabel.text; 

は、すべてのボタンに同じセグエを接続するには、各ボタンからドラッグをCtrlキーが、すべてが同じ識別子をsegues与える必要があります。これはストーリーボード上で乱雑に見えるので、ソースビューコントローラから直接1つのセグを作成し、アクションメソッド(この場合、すべてのボタンに接続する必要があります)でperformSegueWithIdentifier:sender:を呼び出します:

-(IBAction)dayButtonPressed:(UIButton*)sender 
{ 
    [self performSegueWithIdentifier:@"SendWeekDay" sender:sender];  
} 

あなたは上記で概説したコードを使用することができますので、これはその後、送信者としてperformSegue方法にボタンを渡します。

+0

セグが最初にコールされたかどうかを確認するにはどうすればよいですか?または私は最初に文字列を初期化する必要がありますか?私は後でそれを試みます。 – HernandoZ

+0

もしあなたが好きなら、それぞれのメソッドにログを置くことができますが、私の答えのポイントは文字列変数を必要としないということです - ボタンはprepareForSegueの送信者として使用されるので、そこからテキストを取得しますその時点で。 – jrturton

+0

ok私は感覚を参照してください..後でそれを試してみます。ありがとう – HernandoZ

関連する問題