0

だから私は4つの別々のボタンを持つViewControllerを手に入れました。button1 をクリックすると、TableViewController1 が ViewController の上に項目のリストを表示します。アイテムを選択すると、TableViewController1 がドロップダウンし、button1 にテーブルで選択されたテキストが表示されます。これはすべて良いです。しかし、TableViewController2 を使用して button2 に対してまったく同じことを行うと、button1 のデータがリセットされます。

私は識別子、いくつかのコードでセグエを使用します:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"showEducation"]) {
        NSIndexPath *indexPath = [self.tableViewEducation indexPathForSelectedRow];
        ViewController *destViewController = segue.destinationViewController;
        destViewController.educationText = [tableViewArray objectAtIndex:indexPath.row];
    }
}

そのため、現時点では、各ボタンに複数のセグエ識別子と、テーブルビューに複数の .h および .m ファイルを取得しています。これを機能させるために完全に間違った手法を使用していますか? それ以外の場合は、画像をアップロードできます。

編集:ViewControllerにもスライダーがあることに気付きました。ボタンをクリックして TableView の行を選択すると、スライダーが元の位置にリセットされます。上記の種類と同じ問題。

4

1 に答える 1

0

いずれかのtableViewControllerからプッシュするたびに、View Controllerの新しいインスタンスにプッシュしていると思います。

ViewController0 の 1 つのボタンをクリックすると、tableViewController1 のインスタンスが作成されます。行をクリックすると、performSegue を使用して ViewController0 の新しいインスタンスが作成され、これには独自の ViewDidLoad があり、ボタンがリセットされます。

(ビューが「ドロップダウン」していると言っているので、モーダルですか?) performSeguetableViewController から viewController に戻って使用しないで[self dismissModalViewController: withCompletion:]ください。元の ViewController を明らかにします。

ただし、ボタンの名前を変更する方法はありませんがsender、tableView から にアクセスすることで変更できます。これにより、新しいインスタンスではなく、元のビュー コントローラーが得られます。

送信者を取得する 1 つの方法は[performSegue...、ViewController0 から使用することです。独自ので、次のprepareForSegueようなことができます。

//In the first ViewController, not in the TableViewControllers
-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender{
    if(sender == button1)
    {
        UITableViewController1 *dest = segue.destinationViewController;
        [dest setSender: self];
    }
}

そして、TableViewController1 では、変数とViewController *home;メソッドを作成し-(void)setSender:(ViewController*)sender;ますdidSelectRowAtIndexPath[[(ViewController0*)home button1]setTitle:@..];[dismissModalViewController..]

viewController から tableViewController にプッシュする方法に応じて、他の方法もあります。そして、これよりも簡単に送信者にアクセスする方法があると確信していますが、それは機能し、すでに他のデータを送信している場合に役立ちます.

于 2013-05-15T14:41:23.023 に答える