2011-12-05 18 views
0

私はsecond classからfirst classに値を渡す必要があるアプリケーションを作っています。私はsecond classのデリゲートメソッドを作成しました。 second class1つのUIViewControllerから別の値に値を渡す方法

は私がUITextField持っており、このテキストフィールドに任意のテキストを入力すると、それはfirst viewUITableViewcellに渡す必要があります。

しかし、私の場合、値が適切に渡されていません。私は何を間違えたのですか?

これは私のコードです:

second.h

#import <UIKit/UIKit.h> 
@protocol secondDelegate<NSObject> 
@required 
- (void)setsecond:(NSString *)inputString; 
@end 

@interface second : UIViewController { 
    IBOutlet UITextField *secondtextfield; 
    id<secondDelegate>stringdelegate; 
    NSString *favoriteColorString; 
} 
@property (nonatomic, retain) UITextField *secondtextfield; 
@property (nonatomic, assign) id<secondDelegate>stringdelegate; 
@property (nonatomic, copy) NSString *favoriteColorString; 
@end 

second.m

#import "second.h" 

@implementation second 
@synthesize stringdelegate, secondtextfield, favoriteColorString; 

- (void)viewWillDisappear:(BOOL)animated { 
    [[self stringdelegate] setsecond:secondtextfield.text]; 
    favoriteColorString=secondtextfield.text; 
    NSLog(@"thuis check:%@", favoriteColorString); 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 
    [theTextField resignFirstResponder]; 
    return YES; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    //[[self stringdelegate] setsecond:secondtextfield.text]; 
    //favoriteColorString = secondtextfield.text; 
    //NSLog(@"thuis check:%@", favoriteColorString); 
} 
@end  

first.h

#import <UIKit/UIKit.h> 
#import "second.h" 
#import "TextviewExampleAppDelegate.h" 

@interface first : UITableViewController<secondDelegate> { 
    //TextviewExampleAppDelegate *app; 
    TextviewExampleAppDelegate *check; 
} 

first.m

@implementation first 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Configure the cell... 
    cell.textLabel.text = @"message"; 
    cell.detailTextLabel.text = check.favoriteColorString; 
    NSLog(@"this second check:%@", check.favoriteColorString); 
    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    second *viewtwo = [[second alloc] initWithNibName:@"second" bundle:nil]; 
    //viewtwo.favoriteColorString = indexPath; 
    viewtwo.stringdelegate = self; 
    [self.navigationController pushViewController:viewtwo animated:YES]; 
    [viewtwo release]; 
} 

- (void)setsecond:(NSString *)inputString { 
    if (nil != self.stringdelegate) { 
     [self.stringdelegate setsecond:inputString]; 
    } 
    [self.tableView reloadData]; 
} 
@end 
+0

*チェック。オブジェクトを作成する2番目のクラスのオブジェクトを作成します。 –

+0

@coolanikothari uは私が留守のようにパーウルを試みる何をすべきか私を助けることができますが、私はありません任意のソリューション – Rocky

答えて

4
  1. デリゲートメソッドを削除します。
  2. 2番目のクラスを最初のクラスにインポートします。
  3. を2番目のクラスにインポートし、そこでid firstClass変数を実装します。
  4. 2番目のクラスを押すときに、idを(3)から自分に設定します。 you'vが行われ、それを通過する準備
  5. は、設定firstClass.passedValue = passingValue
  6. 例えばポップ第二のクラス

//first.h: 
#import "second.h" 
@class second 

//second.h: 
#import "first.h" 
@class first 
... 
id firstClass; 

//first.m: 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    second *viewtwo =[[second alloc]initWithNibName:@"second" bundle:nil]; 
    [self.navigationController pushViewController:viewtwo animated:YES]; 
    viewtwo.firstClass = self; 
    [viewtwo release]; 
} 

//second.m: 
firstClass.passedValue = self.passingValue; 
+0

uは私がしようと、それにいくつかの例を与えることができ、私を助けてくださいが、私の問題はまだそれに – Rocky

+0

ルックを私を助けてください解決されていません、私は答え – SentineL

+0

センチネルを編集しました私はあなたが与えているが、それは2番目のファーストクラスに渡すことはありません私のデータを作業していませんでしたどのようなエラーを完了しました – Rocky

3

ラフスクラッチ以下をご参照ください:

でアプリケーション代理人.h

デリゲートに変数

NSString *varStr; 

割り当てプロパティ

@propery (nonatomic, retain) NSString *valStr; 

を作成します。ファーストクラスのM

@synthesize varStr; 

初期化VAR

varStr = [NSString strinWithFormat:@"Hi"]; 

デリゲートVARを作成します。

delegate class *var = (delegate class*)[[UIApplication sharedApplication] delegate]; 

設定値

var.varStr = [NSString strinWithFormat:@"First"]; 

GET値

NSLog (@"%@",var.varStr); 

セカンドクラスの

create delegate var;

delegate class *var = (delegate class*)[[UIApplication sharedApplication] delegate]; 

設定値

var.varStr = [NSString strinWithFormat:@"Second"]; 

GET値 uはTextviewExampleAppDelegateのオブジェクトを作成した理由

NSLog (@"%@",var.varStr); 
+0

'デリゲートクラスVAR =(委譲クラス)[[のUIApplication sharedApplication]私のアプリケーションであなたのメソッドを試したかった – Emon

+1

私はあなたの私のコードを表示することはできますか? –

+0

は、実際に私は何もしていない....私はちょうど私があなたの方法を使用しているanother.I 1つのコントローラから複数の文字列データを渡すことができる方法を知りたいが、私は、 '委譲クラスのVAR =(委譲クラス)[[のUIApplication sharedApplicationを使用する場合] delegate]; '次に、delegate undefinedを表示します。私はあなたに愚かな質問をしているかもしれませんが、実際には' sharedApplication'を使ったことはありません。 – Emon

関連する問題