gpt4 book ai didi

ios - 获取 "Back"UIButton 的 ViewController 标识符 no UINavigationController

转载 作者:行者123 更新时间:2023-11-29 00:21:42 25 4
gpt4 key购买 nike

作为一个整体,我对 Xcode 和 Objective-C 非常陌生。上周我开始了我的第一个编码项目/应用程序,但很快遇到了一个问题。

在创建我的应用程序时,我首先将 ViewControllers 从右侧的 Utilities 菜单部分拖到我的工作区中。然后,我从同一个菜单中添加了 UIButtons,并在按住 Control 的同时拖动了两者之间的模式连接(当按下按钮时, View 会从一个 Controller 变为另一个 Controller ?)。我的经验主要是基于 UI,很少编码。

我的问题:

我有 5 个 ViewController,每个都从 Utilities 菜单中单独拖动。根据我希望它们导航的顺序,其中四个由标题为“Next”和“Prev”的 UIButtons 链接。如果在任何时候,在任何给定的 ViewController 上按下了所有 ViewControllers 上的按钮,您将看到一个单独的“菜单”ViewController,它有一个“返回”UIButton。按下此按钮时,我希望 ViewController 切换回我之前按下“菜单”时所在的 4 个 VC 中的任何一个。所有的 ViewController 都在 ViewController 类中。

从逻辑上讲,这可以通过设置几个整数来完成:

@implementation ViewController

int buttonPressedHere = 0;

- (IBAction)view1menu:(id)sender{
buttonPressedHere = 1;
}

- (IBAction)view2menu:(id)sender{
buttonPressedHere = 2;
}

- (IBAction)view3menu:(id)sender{
buttonPressedHere = 3;
}

- (IBAction)view4menu:(id)sender{
buttonPressedHere = 4;
}

- (void)setPrevious{
if(buttonPressedHere == 1)
//insert code to return to previous ViewController 1
if(buttonPressedHere == 2)
//insert code to return to previous ViewController 2
if(buttonPressedHere == 3)
//insert code to return to previous ViewController 3
if(buttonPressedHere == 4)
//insert code to return to previous ViewController 4
}

@end

这里的问题是,我不知道如何获取要切换到的 ViewController 的标识符。有更容易的方法吗?帮助!

最佳答案

首先,在Xib 或Storyboard 中为之前的ViewControllers 定义类:enter image description here

这通常是需要的,您将进一步自定义前四个 View 的事件。自定义 View Controller 类应该继承自 UIViewController。

然后,您可以通过以下代码来控制弹出 Action :

 - (void)setPrevious {    
if (buttonPressedHere == 1) {
[self popToPreviousViewControllerWithClass:[FirstViewController class]];
}
else if (buttonPressedHere == 2) {
[self popToPreviousViewControllerWithClass:[SecondViewController class]];
}
else if (buttonPressedHere == 3) {
[self popToPreviousViewControllerWithClass:[ThirdViewController class]];
}
else if (buttonPressedHere == 4) {
[self popToPreviousViewControllerWithClass:[FourthViewController class]];
}
}

- (void)popToPreviousViewControllerWithClass:(Class)class {
for (UIViewController *previousViewController in self.navigationController.viewControllers) {
if ([previousViewController isKindOfClass:class]) {
[self.navigationController popToViewController:previousViewController animated:YES];
break;
}
}
}

关于ios - 获取 "Back"UIButton 的 ViewController 标识符 no UINavigationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44059956/

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