- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
您好,我是 iOS 的新手,对浏览我的 View 有疑问。
我正在使用 IB 连接导航栏中的 PREVIOUS 和 NEXT 按钮,以推送我的 View 。这一切都很好。但是,我无法确定我需要做什么或需要将代码放在哪里以便我可以跳过 View 。为了简化我的情况...
-我有 1 个导航 Controller 和 4 个 View Controller ,名称分别为 VC1、VC2、VC3、VC4。每个 VC 都有一个 .H/.M-从VC1开始,一个接一个。
假设我想跳过 VC3,并根据 VC2 中的设置直接跳到 VC4。我会将代码放在哪里来执行此操作?我是否需要从 VC3 的 NAV 按钮上取消 IBAction 方法?
如果之前已经涉及到这一点,我深表歉意。如果有 tut 或您知道回答此问题的帖子,请告诉我。我确实进行了搜索,但搜索返回的是通用帖子,这可能是因为我使用了错误的术语。
提前致谢。
最佳答案
几个想法:
如果您想从 VC2 推送到 VC3 或 VC4,而不是在特殊情况下让 VC3 立即推送到 VC4,我认为最好让 VC2 直接推送到适当的 View Controller 。因此,您可能在 VC2 中有一个 IBAction
可以为您执行此操作:
- (IBAction)pushToNext:(id)sender
{
BOOL skipToVC4 = ... // put in whatever logic you'd use to bypass VC3 and go directly to VC4
UIViewController *nextController;
if (skipToVC4)
{
nextController = [self.storyboard instantiateViewControllerWithIdentifier:@"VC4"];
// obviously, if using NIBs, you'd do something like:
// nextController = [[ViewController4 alloc] initWithNibName:@"VC4" bundle:nil];
}
else
{
nextController = [self.storyboard instantiateViewControllerWithIdentifier:@"VC3"];
}
[self.navigationController pushViewController:nextController animated:YES];
}
这样,当您从 VC4 弹出时,您将直接弹出回到相应的 View Controller (例如,如果您从 VC2 推送到 VC4,当您弹出时,您将自动弹出回到 VC2。
而且,很明显,如果您使用的是 Storyboard,而不是手动调用 pushViewController
,您可以从 VC2 中获得两个 segue(一个到 VC3,一个到 VC4),给它们适当的标识符,并且然后只需调用 performSegueWithIdentifier
即可转到适当的 View Controller 。但想法是一样的:您可以定义一个 IBAction
,它根据您选择的任何逻辑执行适当的转场。
你说你有“在导航栏中推送我的 View 的上一个和下一个按钮”,我想知道你的“上一个”按钮。这是在执行 popViewControllerAnimated
吗?通常,“NEXT”按钮将推送到一个新的 View Controller ,但“PREVIOUS”按钮不应推送到前一个 View ,而是弹回到它。如果你不弹出,你可能会得到一些你以前的 View Controller 的多个实例。因此,“PREVIOUS”按钮应该链接到一个 IBOutlet
做如下事情:
- (IBAction)popToPrevious:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}
弹回时,您显然会弹回您从中推送的 View Controller 。如果您想在返回 6.0 之前的 iOS 版本时跳过一些 View Controller ,您可以使用 popToViewController
或 popToRootViewControllerAnimated
。例如,假设您从 VC1 推送到 VC2,再到 VC3,再到 VC4。如果你想从 VC4 一直弹出到 VC1,你可以在 VC4 中连接和 IBAction
,如下所示:
- (IBAction)popToRoot:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
或者,如果你想从 VC4 弹回到 VC2,你会
- (IBAction)popToVC2:(id)sender
{
for (UIViewController *controller in self.navigationController.viewControllers)
{
if ([controller isKindOfClass:[ViewController2 class]])
{
[self.navigationController popToViewController:controller animated:YES];
return;
}
}
}
如果您将 VC2 的引用传递给 VC3 然后再传递给 VC4,则可以通过 navigationController.viewControllers
避免这种迭代,但有时上述技术更容易。
顺便说一句,如果您仅支持 iOS 6 及更高版本,并且正在使用 Storyboard ,您还可以使用展开转场,这是一种更优雅的弹回到特定 View Controller 的方式。但不清楚是否 (a) 您正在使用 Storyboard; (b) 您仅支持 iOS 6 及更高版本,因此此时我将避免讨论展开转场。
关于ios - Interface Builder IB - 导航 Controller ,跳过 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15975039/
对于我的无能,我很抱歉,但总的来说,我对 Cocoa、Swift 和面向对象编程还很陌生。我的主要来源是《Cocoa Programming for OS X》(第 5 版),以及 Apple 的充满
当创建自定义 UIView 时(就方法而言)我应该添加 subview 和其他初始化步骤,以便它在以下情况下显示: 通过在 Interface Builder 中添加来创建 通过初始化创建并以编程方式
我是Python新手,我使用的是Windows 7,并且已经下载并安装了TWS API (9.76.01)(我的TWS运行的是972.1),并按照指示成功安装了ibapi python: 1) pyt
Xcode IB 再次通过不必要的警告让开发人员感到沮丧:我似乎无法从我的 Xcode 项目中删除此警告。 双击警告时,它会显示我的 MainMenu.xib 文件,但没有给出导致问题的原因。有什么想
Interface Builder 对我的 .xib 文件的设置发出警告。 它说,在一个名为“MainMenu.xib Info”的对话框中, Object: Window ID: 21 Type:
是否可以将 IB(Interactive Brokers)网关作为 Windows 服务运行?我想运行 7/24 解决方案,而无需登录操作系统。 最佳答案 IB 网关将/应该每周重新启动 1 次,TW
我知道这是一个非常愚蠢的问题,但过去我在 Interface Builder 中将“圆形样式”UITextField 更改为“无边框样式”文本字段,以便轻松更改框的高度。现在,当我开始做这件事时,我一
我很好奇,IB View 模式到底是用来做什么的? 我改了很多次都没有效果?有人可以解释一下吗。 最佳答案 它改变了用图像填充 View 的方式。 尝试设置图像并更改值以查看差异。 关于iOS - I
我是 IB API 的新手,我想获取特定交易所类型的符号列表。所以基本上我会通过交换/类型并接收符号列表。 我找不到相关的方法。 请指教。 最佳答案 无法从交易平台 API 下载特定交易所的符号列表。
在 Interface Builder 中,我有一堆垂直放置的文本字段。我希望它们均匀地分布在垂直空间中,并且所有尺寸都相同。 我找到了可以让您排列项目的对齐菜单。我找不到分发或调整大小的菜单。 Xc
这是希望它是一个简单的设置。 我无法在 IB 中输入带小数的约束值。每当我输入一个带小数的值并按回车键时,系统都会对其进行四舍五入! 在代码中创建约束时我没有这个问题。只有在IB。 有办法吗? 最佳答
我已经设置了我的pickerview并且一切正常,但是现在我有一个大的pickerview在Interface Builder中占用了很多空间。在 Interface Builder 中工作时不得不移
假设我想使用名为 X 的相同 UIImage 创建许多自定义按钮。通过编程方式,我只会创建一个 UIImage 并将其添加到我创建的所有按钮中。我想知道如果我在 Interface Builder 中
我在 IB 中设置了一个按钮。我设置了 IBOutlet 并链接到它的屏幕对象。有没有办法以编程方式更改按钮位置和/或大小?我知道您可以更改标题和某些内容,但我不知道如何更改其位置或大小。 谢谢。 最
我知道,这听起来很愚蠢,但是改变 IB 中的状态栏颜色并不会改变任何东西。它始终保持灰色。我可以将代码更改为黑色(有效),但在第一次启动时我仍然有这个灰色条。XCode 是 4.2 beta,现在无法
这里是 cocoa 新手...... 我知道这听起来很愚蠢,但我在 Interface Builder 中找不到绑定(bind) Pane 。我有最新的 xCode( 3.2.3 ),但也尝试过其他版
我见过这个问题的 iPhone 等效项 here我想知道...OS X 开发是否有与 bringSubviewToFront: 等效的方法?我需要一些东西来将 NSImageView 发送到“前面”。
我想知道是否有人知道为什么 IB 在奇怪的 Nib 上到处都有莫名其妙的高亮区域.. 下面是一个例子: 我的意思是我用红色标记的区域内的亮区... 分割 View 下方没有 View ,没有与之对应的
在 Interface Builder ,你有约束告诉应用程序如何在设备旋转时重新绘制屏幕。 有没有办法以编程方式设置这些? 最佳答案 您需要设置autoresizingMask观点。 它指定 Vie
我在 Interface Builder 中定义了一个 View ,其自动布局约束可以在 IB 中定义,除了一个。这是我在 viewDidLoad 中通过代码添加的. 除了 IB 显示模棱两可的布局警
我是一名优秀的程序员,十分优秀!