私は Stackoverflow で同様の質問をたくさん見てきましたが、多くのことを試しましたが、これを理解できないようです。複数の TableViewControllers と 1 つの MainViewController があります。MainViewController には、さまざまな TableViewControllers を呼び出すボタンがあり、テーブルセルを選択すると tableViewController が閉じます。
問題は、tableViewControllers のいずれかからプッシュするたびに、MainViewController の新しいインスタンスをプッシュすることです。私は現在、セグエを使用してこれらの異なるコントローラー間をプッシュしています。
つまり、TableViewControllers から ViewController に切り替えるときに、ViewController が新しいインスタンスとしてプッシュされないようにしたいのです。これは、以前のデータ入力が削除されるためです。
どちらかを使用する必要があると確信しています:
[self dismissModalViewController: withCompletion:]
performSegue
prepareForSegue
または、クラスにいくつかのグローバル変数を設定してそれらを呼び出しますが、これを正しく実装するにはまだ十分な経験がありません。
最終結果の簡単な例は次のとおりです。VC の 3 つのテキストフィールド。textfield1 をクリックすると tableview1 が開き、セルをクリックすると textfield1 が更新されます。Textfield2 は tableview2 などを開きます。
必要に応じてサンプルコードを投稿できます。
編集、コードの投稿 (セグエはストーリーボードで実行されることに注意してください): TableViewExample.h:
@interface IndustryViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
NSArray *tableViewArray;}
@property (nonatomic, strong) IBOutlet UITableView *tableViewIndustry;
TableViewExample.m:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showIndustry"]) {
NSIndexPath *indexPath = [self.tableViewIndustry indexPathForSelectedRow];
ViewController *destViewController = segue.destinationViewController;
destViewController.industryText = [tableViewArray objectAtIndex:indexPath.row];
destViewController.industryTextName = [tableViewArray objectAtIndex:indexPath.row];
}}
次に、ViewController.m で、viewDidLoad:
[industry setTitle:industryText forState:UIControlStateNormal];
これらは私が考える最も重要な部分です。