2013-03-11 110 views
3

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

回答

3

在酥料饼的表创建一个委托视图控制器和变量传递给它作为单元数据 在.H的酥料饼的表视图控制器

@protocol PopoverTableViewControllerDelegate <NSObject> 

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

@end 

@interface PopoverTableViewController : UITableViewController 

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

@end 

的在.M的didSelectRowAtIndexPath方法调用delega TE和传递单元数据变量作为

- (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]; 
} 
+0

感谢这很好 – bardockyo 2013-03-11 17:36:47

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]; 


} 

这样的事情...希望这有助于...

相关问题