0

ビューコントローラー実装ファイルの1つから呼び出しているxibファイルがあります。以下は、View Controllerをインスタンス化してナビゲーションスタックにプッシュするために使用しているコードです:-

upsertView=[[[NSBundle mainBundle] loadNibNamed:@"InsertView" owner:self options:NULL] lastObject];
UIViewController *vc=[[UIViewController alloc] init];
vc.view=upsertView;
[self.navigationController pushViewController:vc animated:NO];

xib ビューには、ユーザーが値を入力して保存できる 3 つのテキスト ファイルが含まれています。この保存は、同じコントローラー実装ファイル内のアクションに接続されています (ここから xib を呼び出しています)。アクションは次のとおりです:-

-(void) saveValues
{
    UIViewController *vc=[[self.navigationController viewControllers] lastObject];
    NSString *valID = ((UITextField *)[vc.view viewWithTag:23]).text;
    NSLog(@"%@",valID);
}

上記がxibからユーザーが入力した値を取得する最良の方法であるかどうか教えてください。

4

1 に答える 1

0

いくつかの提案

安全のために、 function から返された配列から直接 lastObject を取得するのではなく、loadNibNamed:owner:options:ビューの配列を反復処理してから正しいものを選択することをお勧めします。

使用viewWithTagもお勧めできません。私は個人的にそれについていくつかの悪い経験をしました。Apple は、一部のビューのタグを内部で管理しています。そのため、タグが重複すると、解決が非常に混乱する可能性があります。

代わりに、コントローラーのテキストフィールドの IBOutlets を維持して、データを簡単に取得できます。

于 2013-06-16T15:28:15.107 に答える