3

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

4

3 回答 3

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

于 2013-03-11T15:13:29.750 回答
3

在弹出框的表格视图控制器中创建一个委托,并将变量作为单元格数据传递给它在弹出框的表格视图控制器的 .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];
}
于 2013-03-11T16:55:57.973 回答
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];


}

像这样的东西......希望这会有所帮助......

于 2013-03-11T15:20:17.837 回答