如何将值从view2发送到view1

时间:2011-08-20 09:56:53

标签: iphone tableview

我的问题是如何重新加载tableview

我有2个viewcontrollers。

在第一个Viewcontroller中,我有一个tableview。如果我在tableview中选择任何行,它将转到第二个viewcontroller。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
    NextPageController *nextView = [[NextPageController alloc] initWithNibName:@"NextPageView" bundle:nil];
    [self.navigationController presentModalViewController:nextView animated:YES];
    [nextView release];
}

在第二个视图控制器中我有一个文本字段。如果我在文本字段中输入任何值,我需要将该值消除到第一个viewcontroller tableview中。

任何人都可以帮助我吗?

提前致谢。

5 个答案:

答案 0 :(得分:4)

给NextPageController一个协议和一个委托,就像这样:

@protocol (NextPageControllerDelegate)
-(void)displayString:(NSString *)inputString;
@end

@interface FirstTableViewController : UITableViewController {
    id<NextPageControllerDelegate> stringDelegate;
}

@property (nonatomic, assign) id<NextPageControllerDelegate> stringDelegate;

并在.m文件中:

@implementation
@synthesize stringDelegate;

然后,当你分配NextPageViewController时,插入:

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;  
{ 
    NextPageController *nextView = [[NextPageController alloc] initWithNibName:@"NextPageView" bundle:nil]; 

    nextView.stringDelegate = self;

    [self.navigationController presentModalViewController:nextView animated:YES]; 
    [nextView release]; 
}

当然,你的表视图控制器必须符合NextPageControllerDelegate协议,并给出

的实现
-(void)displayString:(NSString *)inputString;

之后,当你在nextView中,并希望让表视图显示该字符串时,你可以这样做:

if(nil != self.stringDelegate)
    [self.stringDelegate displayString:someString];

蚂蚁然后就完成了

答案 1 :(得分:1)

创建全球NSMutableArray 存储并添加NSMutableArray中的所有数据 在头等舱的-(void) viewwillappear,请致电[tablename reloadData];

答案 2 :(得分:1)

制作全局字符串,

在secondViewController中分配它,当你从secondViewController弹出到FirstViewController时,viewWillAppear将调用。

制作逻辑,使用全局变量,然后重新加载表..

答案 3 :(得分:1)

您需要在NSString中设置一个全局appDelegate变量,用于存储在第二个视图中归档的文本文本。

现在,当你回到上一页时,

- (void) viewWillAppear
{
    [yourDataSourceArray addObject:appDelegate.yourGlobalString];
    [yourTableView reloadData];
}

并确保您的yourDataSourceArrayNSMutableArray

希望它对你有所帮助。

答案 4 :(得分:1)

您可以在第一个视图中为NSString创建属性,在第二个视图中为第一个视图控制器(UITableViewController?)的实例创建属性。然后,在输入所需文本后,在第二个视图控制器中保存或弹出或执行任何操作后,可以设置NSString的属性,弹出视图,然后在viewWillAppear中重新加载tableView。或者你可以像Lewen所描述的那样使用委托。