gpt4 book ai didi

ios - SplitViewController引用逻辑

转载 作者:行者123 更新时间:2023-11-29 04:11:51 24 4
gpt4 key购买 nike

我读了很多关于 SplitViewControllers 的内容,但我在原地踏步,因为我不明白一些东西。

您有一个 masterviewcontroller 和一个 popoverview 作为栏按钮项(过滤器)

假设 masterviewcontroller 是一个 tableview,而 popoverview 中是一个 uiview Controller

在iPhone上,我总是分配masterviewcontroller并在进行一些修改后更新引用,当你点击“搜索”按钮时,它会推送一个带有新数据的新 Controller (想想看,也许这不是最好的主意)现在这个逻辑不再起作用了。

我读到你必须相互引用 Controller ,所以我这样做了。

在过滤器 Controller 中(这是弹出 View )

.h

@property (strong, nonatomic) MasterViewController *masterviewController;
@property (weak, nonatomic) IBOutlet UISlider *filterPrice;

- (IBAction)filterSearch:(id)sender;


.m
- (IBAction)filterSearch:(id)sender {

self.masterviewController.filterSearchPrice = [NSNumber numberWithInt:self.filterPrice.value];
[self.masterviewController performFilterSearch];
}

performFilterSearch 检查字段,使用过滤器名称和返回的 json 对象调用 url,解析并重新加载数据。

现在我希望 masterviewcontroller 显示新数据,但这并没有发生,事实上什么也没有发生......

更新这是 FilterSearch:

-(void)performFilterSearch
{

[queue cancelAllOperations];
[[AFImageCache sharedImageCache] removeAllObjects];
[[NSURLCache sharedURLCache] removeAllCachedResponses];

isLoading =YES;
[self.tableView reloadData];

searchResults = [NSMutableArray arrayWithCapacity:10];

NSURL *url = [self urlFilterWithSearchPrice:filterSearchPrice];
NSLog(@"%@",url);

NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation
JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
[self parseDictionary:JSON];


isLoading = NO;
[self.tableView reloadData];

}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
[self showNetworkError];
isLoading = NO;
[self.tableView reloadData];
}];

operation.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
[queue addOperation:operation];

顺便说一句,当我在filterSearch中登录以检查其是否更新时:

NSLog(@"%d",self.masterviewController.filterSearchPrice);
NSLog(@"%d",[self.filterTypeSegmentedControl selectedSegmentIndex]);

第一个永远不会更新,第二个会偏离路线更新

更新 2:(如何启动 popview):

我在 masterviewcontrollers 导航上添加了一个具有操作的栏按钮项目。我从 masterviewcontroller -> filtercontroller 添加了一个弹出框

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

filterPopOver = [(UIStoryboardPopoverSegue *)segue popoverController];

- (IBAction)filterPopButton:(id)sender {

if (filterPopOver){
[filterPopOver dismissPopoverAnimated:YES];
}
else{
[self performSegueWithIdentifier:@"showFilterPopover" sender:sender];
}
}

最佳答案

当您启动filterController时,您需要传入对MasterViewController的引用。您在过滤器 Controller 中拥有它的属性,但您从未为该属性分配值。

编辑后:

你的prepareForSegue方法应该是这样的:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
FilterController *fc = (FilterController *)segue.destinationViewController;
fc.masterViewController = self;
}

确保您已将 MasterViewController.h 导入 FilterController.m

关于ios - SplitViewController引用逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com