如何将第二类UITextField中的值传递给iPhone中UITableViewCell上的第一个视图类

时间:2011-12-05 11:30:48

标签: iphone objective-c

您好我尝试了另一个传递数据的代码,但它无法正常工作。如何在行UITextField上的第一个视图中传递UITableViewCell值?请有人帮助我代理协议

//
//  first.h
//  TextviewExample
//
//  Created by pradeep.yadav on 12/5/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

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

//@class second;



@interface first : UITableViewController <secondDelegate>{

    //TextviewExampleAppDelegate*app;
    //TextviewExampleAppDelegate *check;
    second *secondview;
    NSString                *secondFavoriteColorString;
    //second *value;

}
@property (nonatomic, retain) second *secondview;
@property (copy) NSString   *secondFavoriteColorString;
@end




- (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=secondFavoriteColorString;
    NSLog(@"this second check:%@",secondFavoriteColorString);

    return cell;
}



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {


    second *viewTwo = [[second alloc] initWithNibName:@"second" bundle:[NSBundle mainBundle]];
    self.secondview = viewTwo;
    [viewTwo release];
    [self.navigationController pushViewController:self.secondview animated:YES];
}


-(void)setsecond:(NSString*)secondtextview
{
    secondFavoriteColorString = secondtextview;
    NSLog(@"this second check:%@",secondFavoriteColorString);
}


this second class

//
//  second.h
//  TextviewExample
//
//  Created by pradeep.yadav on 12/5/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>
@protocol secondDelegate<NSObject>
@required
-(void)setsecond:(NSString*)secondtextview ;//forIndexPath:(NSIndexPath*)indexPath;



@end


@interface second : UIViewController {
    IBOutlet UITextField *secondtextfield;

    NSString             *favoriteColorString;
id <secondDelegate> delegate;
}
@property (nonatomic,retain)UITextField *secondtextfield;
//@property (nonatomic,assign)id<secondDelegate>delegate;
@property (retain) id delegate;
@property (nonatomic,copy)NSString           *favoriteColorString;

@end



#import "second.h"


@implementation second
@synthesize delegate,secondtextfield,favoriteColorString;


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


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

    return YES;
}

3 个答案:

答案 0 :(得分:0)

以下是如何在viewController之间共享数据的教程的链接:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/54859-sharing-data-between-view-controllers-other-objects.html

它可以帮助你解决问题。

答案 1 :(得分:0)

从View1中的TextField到View2中的单元格

在第二个视图中获取字符串。 财产,合成它, 从第一个视图移动到第二个视图时在分配之后将UITextField的值分配给合成字符串,然后在之前分配。 在第二个视图中显示单元格上合成字符串中的文本。

从View2中的TextField到View1中的单元格

在First View中获取字符串。 财产,合成它, 在secondView和property中获取FirstView的对象并合成它

从第一个视图移动到第二个视图在分配之后分配objSecondView.objFirstView=self; 的值,在推送之前分配 。 现在在第二个视图中将文本的值赋给firstViews合成字符串。 并在firstView的viewWillAppear中将其字符串的值赋给单元格

E.g。上面例子中的方法必须看下面的方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
 second *viewTwo = [[second alloc] initWithNibName:@"second" bundle:[NSBundle mainBundle]];
 viewTwo.objViewOne = self;
 [self.navigationController pushViewController:viewTwo animated:YES];
 [viewTwo release];
}

多数民众赞成......评论是否还有任何问题。

答案 2 :(得分:0)

我认为麻烦的是你在第二个视图中声明了委托,并且你试图从第一个视图中调用它。当您返回第一个视图时,第二个视图很可能已被清理。

您要做的是在第一个视图控制器中声明委托方法,并在创建第二个视图控制器时,将第一个视图控制器设置为第二个视图控制器的委托。

我刚才创建了example project。它不处理表视图,但它演示了将字符串从第二个视图控制器传递回第一个视图控制器。