您好我尝试了另一个传递数据的代码,但它无法正常工作。如何在行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;
}
答案 0 :(得分:0)
以下是如何在viewController之间共享数据的教程的链接:
它可以帮助你解决问题。
答案 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。它不处理表视图,但它演示了将字符串从第二个视图控制器传递回第一个视图控制器。