0

我在 tableViewCell 中有一个 UIButton 执行

-(IBAction)buttonClicked:(id)sender{

UIStoryboard *SB = [UIStoryboard storyboardWithName:@"ABC" bundle:nil];
UIViewController *VC = [SB instantiateViewControllerWithIdentifier:@"someID"];

popoverController  = [[UIPopoverController alloc] initWithContentViewController:VC];
[popoverController setDelegate:self];

..............................

[popoverController presentPopoverFromRect:rect
                                       inView:self.view
                     permittedArrowDirections:UIPopoverArrowDirectionRight
                                     animated:YES];
}

弹出一个由 UITextField 和 UIButton 组成的控制器。现在我要通过单击 UIButton 从弹出控制器传回 UITextField 中的字符串?

4

2 回答 2

0

如果您将 TableView 与自定义 TableViewCell 一起使用,则可以在 TableViewCell 类中为按下按钮时创建一个方法:

CustomTableViewCell.h

@interface CustomTableViewCell : UITableViewCell

@property (nonatomic, strong) IBOutlet UIButton *cellButton;
@property (nonatomic, strong) IBOutlet UITextField *cellTextField;

- (NSString*)getText;

@end

CustomTableViewCell.m

- (NSString*)getText {

    return self.cellTextField.text;
}

在您的 CustomTableView 类中:

自定义表格视图.m

在您的 CustomTableView 的委托方法中,将 self 设置为您的 CustomTableViewCell 的委托

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    CustomTableViewCell *cellCustom = [tableView dequeueReusableCellWithIdentifier:@"CustomTableViewCell"];
    ...
    [cellCustom.cellButton setTag:indexPath.row];
    ...
    return cell;
}

最后在按钮的 IBAction 方法中:

- (IBAction)pushButton:(id)sender{

    UIButton *btn = (UIButton*)sender;

    CustomTableViewCell *cellSelected = (CustomTableViewCell *)[self.tableView cellForRowAtIndexPath:btn.tag];

    NSString *strWritten = [cellSelected getText];

    NSLog(@"Text written: %@", strWritten);
}
于 2014-02-24T13:14:03.553 回答
0

将此视图控制器保留在 .h 中

UIViewController *VC;

改变这个

UIViewController *VC = [SB instantiateViewControllerWithIdentifier:@"someID"];

self.VC = [SB instantiateViewControllerWithIdentifier:@"someID"];

当 .h 对象从内存中销毁时,它将从内存中释放。

当您关闭弹出窗口时,最后一个弹出窗口仍然存在,您可以访问

VC.yourTextField.text

当您再次出现在弹出窗口时,请确保通过设置 @"" 将文本字段清空为空。

于 2014-02-24T09:51:22.070 回答