gpt4 book ai didi

iOS:UISplitViewController 显示/隐藏主视图按钮不起​​作用

转载 作者:行者123 更新时间:2023-12-01 18:54:30 25 4
gpt4 key购买 nike

我正在学习 Objective-C 。现在我是具有 UISplitViewController 和显示/隐藏主视图按钮的古玩。我看过很多教程,但我做错了,我不知道是什么。我的按钮不隐藏主视图。这两天我彻底崩溃了。现在我建立了这个示例项目来征求你的意见。
在我的模式中,我有:TabBarVC、SplitVC、TableViewVC 和 ViewVC。所有 Controller 都是我的自定义。
MyTabBarViewController 先来。我有 UISplitViewController 的选项卡。

MySplitViewController.m

#import "MySplitViewController.h"
#import "MyTabBarViewController.h"
#import "MyDetailViewController.h"

@interface MySplitViewController ()

@end

@implementation MySplitViewController

- (void)viewDidLoad {
[super viewDidLoad];

MyTabBarViewController *masterVC = [self.storyboard instantiateViewControllerWithIdentifier:@"myTableVC"];
MyDetailViewController *detailVC = [self.storyboard instantiateViewControllerWithIdentifier:@"myDetailVC"];

NSArray *newViewControllersArray = [NSArray arrayWithObjects:masterVC, detailVC, nil];

self.viewControllers = newViewControllersArray;

}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}


@end

MyTableViewController.m
#import "MyTableViewController.h"

@interface MyTableViewController ()

@end

@implementation MyTableViewController

- (void)viewDidLoad {
[super viewDidLoad];

self.dataArray = [[NSArray alloc] initWithObjects:@"1", @"2", nil];
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.dataArray count];
}

//configure the cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];

cell.textLabel.text = [self.dataArray objectAtIndex:indexPath.row];

return cell;
}

@end

MyDetailViewController.h
#import <UIKit/UIKit.h>

@interface MyDetailViewController : UIViewController <UISplitViewControllerDelegate>
@property (weak, nonatomic) IBOutlet UIBarButtonItem *showHideMasterVC;
@property (nonatomic, strong) UIPopoverController *popover;

@end

MyDetailViewController.m
#import "MyDetailViewController.h"

@interface MyDetailViewController ()

@end

@implementation MyDetailViewController

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}

- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

-(void)splitViewController:(UISplitViewController *)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)pc
{
//Grab a reference to the popover
self.popover = pc;
}

-(void)splitViewController:(UISplitViewController *)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
//Nil out the pointer to the popover.
_popover = nil;
}

@end

这是我的整个 Storyboard项目: MyProject

很抱歉有很多代码,但请帮助我,否则我会发疯。谢谢!
PS 顺便说一句,是否可以在 NavigationController 之外显示/隐藏主视图按钮,例如在某些 View 上?

现在我知道了 - (void)splitViewController(UISplitViewController *)svc willHideViewController 和 - (void)splitViewController(UISplitViewController *)svc willShowViewController 在 iOS8 中已弃用。

那么有人可以纠正我的项目我应该做些什么来解决我的问题吗?

最佳答案

我认为最简单的方法是添加 self.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;在你的 MyDetailViewController viewDidLoad .这将显示显示/隐藏 MasterDetailViewController 按钮。

还有你的- (void)splitViewController(UISplitViewController *)svc willHideViewController- (void)splitViewController(UISplitViewController *)svc willShowViewController在 iOS8 中已弃用。

我有一个类似的问题,对我来说,我通过简单地使用 Master-Detail Application 模板创建我的项目来解决它。它带有显示/按钮和- (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController作为默认值。如果您使用 TabBarViewController 作为 rootViewController,那么您可能希望将其设置为 applicationDidFinishLaunchingWithOptions 中的 rootViewController .希望这将有助于解决您的问题。

编辑:

PS 顺便说一句,是否可以在 NavigationController 之外显示/隐藏主视图按钮,例如在某些 View 上?

首先在 Storyboard 中创建一个 UIButton。将其连接到 IBAction。

- (IBAction)buttonAction:(id)sender {

self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay;
[self.splitViewController.displayModeButtonItem action];
}

这应该有效。

关于iOS:UISplitViewController 显示/隐藏主视图按钮不起​​作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28701675/

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