我在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中的字符串?
答案 0 :(得分:0)
将此视图控制器保留在.h
中UIViewController *VC;
更改此
UIViewController *VC = [SB instantiateViewControllerWithIdentifier:@"someID"];
到
self.VC = [SB instantiateViewControllerWithIdentifier:@"someID"];
当.h对象从内存中销毁时,它将从内存中释放。
当您关闭弹出框时,仍然存在最后一个弹出框,您可以像
一样进行访问VC.yourTextField.text
当你再次出现在popover上时,请确保通过设置@“”将文本字段清空为空。
答案 1 :(得分:0)
如果您在自定义TableViewCell中使用TableView,则可以在按下按钮时在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类中:
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);
}