当前位置 : 主页 > 手机开发 > ios >

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

来源:互联网 收集:自由互联 发布时间:2021-06-11
我在弹出窗口中有一个UITableView.当用户在弹出窗口中选择一行时,我希望它关闭弹出窗口并将单元格中的一些数据保存到父视图控制器中的变量.最有效的方法是什么? 在popover的表视图控
我在弹出窗口中有一个UITableView.当用户在弹出窗口中选择一行时,我希望它关闭弹出窗口并将单元格中的一些数据保存到父视图控制器中的变量.最有效的方法是什么? 在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 as

@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];
}
网友评论