gpt4 book ai didi

ios - 如何使用 UITabBarController 为每个选项卡使用相同的 ViewController?

转载 作者:行者123 更新时间:2023-11-28 18:34:32 26 4
gpt4 key购买 nike

并根据选择的选项卡更改 ViewController 的内容和标题。

这可能吗?

以下是我在 UITabBarController 的 viewDidLoad 函数中尝试的内容

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

NSMutableArray * tabs = [[NSMutableArray alloc] init];

EventsViewController * upcomingEvents = (EventsViewController *)[[self viewControllers] objectAtIndex:0];
upcomingEvents.title = @"Upcoming Events";
upcomingEvents.events = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]];

[tabs addObject:upcomingEvents];

EventsViewController * myEvents = (EventsViewController *)[[self viewControllers] objectAtIndex:1];
myEvents.title = @"My Events";
myEvents.events = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"MyEvents" ofType:@"plist"]];

[tabs addObject:myEvents];

[self.tabBarController setViewControllers:tabs animated:YES];

}

这会导致错误

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setEvents:]: unrecognized selector sent to instance 0x108fe3b50'

我目前的 Storyboard设置 My setup

编辑:

最后得到 Unkn0wn.Bit 的帮助和理解。

我放弃了自定义 UITabBarController,只是调整了我的 EventsViewController (UITableViewController) 中的 viewWillAppear 函数,以根据 tabBarController 的 selectedIndex 更改源。

使用两个单独的 NSMutableArrays(myEvents,即将到来的事件)为多个 tabBar 按钮有效地使用相同的 View (具有不同的信息)。

(void)viewWillAppear:(BOOL)animated {
if([self.tabBarController selectedIndex]) {
self.events = self.myEvents;
self.navBar.title = @"My Events";
} else {
//temporary instead run function that either downloads events or tries to update if necessary
self.events = self.upcomingEvents;
self.navBar.title = @"Upcoming Events";
}
}

最佳答案

这部分错误信息:

-[UINavigationController setEvents:]

告诉您您正在 UINavigationController 实例上调用 setEvents: 但它没有响应。

您的问题是您忘记了 View Controller 层次结构,因为您在导航 Controller 中有 EventsViewController 实例,因此您需要遍历层次结构以调用正确的实例。

即:

UINavigationController *navController = (UINavigationController *)[[self viewControllers] objectAtIndex:0];
EventsViewController *upcomingEvents = [navController topViewController];

关于ios - 如何使用 UITabBarController 为每个选项卡使用相同的 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21681113/

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