将数据从选定行传递到视图控制器

时间:2013-03-11 15:08:54

标签: ios objective-c uitableview uiviewcontroller

我在弹出窗口中有一个UITableView。当用户在弹出窗口中选择一行时,我希望它关闭弹出窗口并将单元格中的一些数据保存到父视图控制器中的变量。最有效的方法是什么?

3 个答案:

答案 0 :(得分:4)

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

在此方法中,您可以处理用户选择。对于从UITableView到另一个ViewController的视图控制器之间传递变量,请阅读ray wenderlich的这篇精彩教程:http://www.raywenderlich.com/1797/how-to-create-a-simple-iphone-app-tutorial-part-1

答案 1 :(得分:3)

在popover的表视图控制器中创建一个委托,并将该变量作为单元格数据传递给它 在popover的表视图控制器的.h中

@protocol PopoverTableViewControllerDelegate <NSObject>

- (void)didSelectRow:(NSString *)cellDataString;

@end

@interface PopoverTableViewController : UITableViewController

@property (strong, nonatomic) id<PopoverTableViewControllerDelegate> delegate;

@end

在.m的didSelectRowAtIndexPath中调用委托并将单元格数据变量传递为

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   [self.delegate didSelectRow:cellDataString];
}

- (void)dealloc
{
   [super dealloc];
   [_delegate release];
}

在.h中的父视图控制器中实现它将PopoverTableViewControllerDelegate实现为

@interface ParentViewController : UIViewController <PopoverTableViewControllerDelegate>

@property (strong, nonatomic) NSString *cellDataString;

@end

并在.m中将委托实现为

- (void)dealloc
{
   [super dealloc];
   [_cellDataString release];
}

PopoverTableViewController *popoverTableViewController = [[[PopoverTableViewController alloc] init] autorelease];
popoverTableViewController.delegate = self;

- (void)didSelectRow:(NSString *)cellDataString
{
    self.cellDataString = cellDataString;
    [popOverController dismissPopoverAnimated:YES];
}

答案 2 :(得分:0)

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   ParentViewController *parent = [[ParentViewController alloc] initWithNibName:@"ParentViewController" bundle:nil];
 parent.variable = //do something you want

[self.navigationcontroller pushViewController:parent animated:YES];


}

这样的事情......希望这会有所帮助......