我正在使用Xcode在目标c中编写应用程序。我试图使用委托将数据从容器视图控制器传递到父视图控制器。我已成功将数据传递给父视图控制器,但所有文档都使用viewDidLoad或viewDidAppear设置我在.m实现文件中发送到.h头文件的内容。我想知道,因为视图已经存在,如果有办法检测视图中的数据已被更改并自动运行方法或代码以使用新信息更新视图。有关didReceiveNewData或didEditExistingValues(当然那些不是真正的方法)的想法。谢谢你的帮助!
编辑:到目前为止我做了什么:
我想将数据从MainFeedTableViewController传递给MainFeedViewController(第一个是在第二个内部的容器中)。我想将MainFeedViewController中自定义导航栏的标题设置为MainFeedTableViewController中描述的内容。
在MainFeedTableViewController.m(视图发送数据)中,我有:
#import "MainFeedTableViewController.h"
#import "FeedViewController.h"
@interface MainFeedTableViewController ()
@end
@implementation MainFeedTableViewController
- (IBAction)swipeLeftDetected:(UIGestureRecognizer *)sender {
UIStoryboard *mc = self.storyboard;
FeedViewController *fv = [mc instantiateViewControllerWithIdentifier:@"FeedViewController"];
fv.navigationBarTitleToSet = @"HOPING TO SET TITLE TO THIS";
[self performSegueWithIdentifier:@"MainToLocalFeed" sender:self];
}
and some other unrelated stuff..
在MainFeedTableViewController.h中我有:
#import <UIKit/UIKit.h>
@interface MainFeedTableViewController : UITableViewController
@end
在MainFeedViewController.m(接收数据的那个)中,我有:
#import "FeedViewController.h"
@interface FeedViewController () <UINavigationBarDelegate>
@property (weak, nonatomic) IBOutlet UINavigationBar *navigationBar;
@end
@implementation FeedViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)setNavigationBarTitle:(NSString *)navigationBarTitle{
self.navigationItem.title = navigationBarTitle;
}
在MainFeedViewController.h中我有:
#import <UIKit/UIKit.h>
@interface FeedViewController : UIViewController
@property NSString *navigationBarTitleToSet;
@end
我想使用来自.h(navigationBarTitleToSet)的数据或仅发送视图控制器运行setNavigationBarTitle方法,如果可能的话,运行带委派的方法。非常感谢,我希望这是可能的:)
答案 0 :(得分:0)
事实证明我需要添加第二个导航栏来考虑容器视图,允许我使用parentViewController方法然后使用navigationItem.title在当前堆栈中导航。对于碰巧使用容器找到此内容的任何人,请确保在嵌入segue之后立即添加一个容器。我还不确定你是否可以通过授权使用方法,但由于viewDidLoad,我无法再考虑任何需要它的情况。 感谢@Tander的帮助!