我在弹出窗口中有一个UITableView。当用户在弹出窗口中选择一行时,我希望它关闭弹出窗口并将单元格中的一些数据保存到父视图控制器中的变量。最有效的方法是什么?
答案 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];
}
这样的事情......希望这会有所帮助......