2009-08-26 2 views
0

私はtableviewcontrollerを持つiPhoneアプリを持っています。 SomeObjectのは、関連するすべてのビューのプロパティを持つオブジェクトですiPhoneのuiviewcontrollerのオブジェクトにデータを渡す

IBOutlet SomeObject *controller; 

:avTouchViewControllerがどのように見える性質を持っていると呼ばれるのUIViewController上記

nextViewController = [[avTouchViewController alloc] initWithNibName:@"avTouchViewController" bundle:nil]; 

:あなたは、特定のセルをクリックすると、このコードで新しいのUIViewControllerを開きます。

私はtableviewcontrollerからnsstringパラメータを渡したいと思います。avTouchViewControllerをsomeObjectで初期化します。

どうすればいいですか?

答えて

1

私は少しあなたの質問で混乱しています。セルが既存のUITableViewの内部でタップされているときにavTouchViewControllerを作成しているとしますが、最後の部分で逆の状況が説明されています。

nextViewController = [[avTouchViewController alloc] initWithNibName:@"avTouchViewController" bundle:nil]; 
nextViewController.controller = theInstanceOfSomeObjectIWantToPass; 

ます。また、名前を変更することがありますが、ビューコントローラに情報を渡す場合

基本的には、ちょうどそれを(すでに場合があります)を設定することができますプロパティ、たとえばを与えますcontrollerプロパティ読者には、ビューコントローラにはcontrollerというプロパティがあり、実際にはSomeObject*というプロパティがあります。また、クラス名は大文字で入力する必要があります。つまり、avTouchViewControllerの代わりにAvTouchViewControllerを使用してください。

0

私はこれをやっていた場合、私は私のUIViewControllerのサブクラスに私自身の初期化子を追加します。

- (id)initWithController:(NSString *pController) { 
    if (self = [super initWithNibName:@"avTouchViewController" bundle:nil]) { 
     self.controller = pController; 
    } 
    return self; 
} 

そしてちょうど(のtableViewに:didSelectRowAtIndexPath:またはwhereever):以下を呼び出す

NSString *controller = @"Sample String"; 

AVTouchViewController *nextViewController = [[AVTouchViewController alloc] initWithController:controller]; 
[controller release]; 

[self.navigationController pushModalViewController:nextViewController animated:YES]; 
[nextViewController release]; 

スタイルのポイントとして、クラス名は通常大文字で始まります(したがって私のAVTouchViewControllerへの変更)。

+0

私はこの方法を好む(強いC++の背景から来て、すべてのクラスがデフォルトのコンストラクタを持つようにCocoaの要件を気に入らないようにしていましたが)、数ヶ月前に使用をやめました。私は、Cocoaのコードが、Cocoaの開発者が期待しているようにもっと読むことが良いと思います。これには、デフォルトのinitを使用することと、パラメータを使用して値を設定することが含まれます。 –

関連する問題