3

我有 2 个 ViewController,在第一个 - TableView 和第二个 - 带有标签的按钮中。当我单击第二个 ViewController 中的按钮时,我需要返回 TableView 并设置

cell.detailTextLabel.text

按钮上标签的文本。

要返回第一个视图,我使用:

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];

但是我如何将标签从第二个视图设置为:

cell.detailTextLabel.text

第一眼????

4

3 回答 3

2

我会在第二个视图控制器中定义一个协议和委托

@protocol SecondViewController;

@interface SecondViewController : UIViewController

@property (nonatomic, assign) id<SecondViewController> delegate;

@end


@protocol SecondViewController <NSObject>
- (void)secondViewController:(SecondViewController *)controller didTappedOnButton:(UIButton *)button;
@end   

然后当点击按钮时调用代表:

- (IBAction)buttonTapped:(UIButton *)sender
{
    // do somthing..

    // then tell the delegate about the button tapped
    [self.delegate secondViewController:self didTappedOnButton:sender];
}  

在您的第一个视图控制器中实现协议

@interface FirstViewController : UIViewController <SecondViewControllerDelegate>

当您推送第二个视图控制器时,将第一个视图控制器设置为第二个委托:

- (void)someMethodThatPushTheSecondViewController
{
    SecondViewController *svc = [[SecondViewController alloc] init];
    [self.navigationController pushViewController:svc animated:YES];
    svc.delegate = self;
}  

并实现委托方法以在点击按钮时获得通知

- (void)secondViewController:(SecondViewController *)controller didTappedOnButton:(UIButton *)button
{
    // do somthing after button tapped
    // you can get the button title from button.titleLabel.text
}
于 2012-08-10T11:31:04.930 回答
0

要访问父类方法或属性,您必须实现一个协议,并使用它的委托。您可以使用您在当前(父)类中创建的类对象来访问子类方法/属性。但是您想如何从子类访问父类实体?是的,实施协议。

或者新手方式:点击按钮后,将所需的值保存到 NSUserDefaults 中。然后,当您转到您的父类(viewController 1)时,ion viewWillAppear,检查保存的值,如果它不是 nil,则显示它。

于 2012-08-10T11:04:24.270 回答
0
[self.navigationController popViewControllerAnimated:YES];
于 2017-04-13T21:53:24.860 回答