- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有三个 ViewController 和一个导航 Controller 。导航堆栈是:
NavigationController-push->VC1-push->VC2。 VC1 可以模态地在代码中呈现 VC3。它不是通过 segues 连接的。
VC1 - “你当前的项目”
VC2 - “你的项目的细节”
VC3 - “创建新项目”
当用户希望创建一个新项目时,我使用 VC3:
- (IBAction)newProjectButton:(id)sender {
NewProjectViewController *newProject = [[NewProjectViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newProject];
[self presentViewController:navController animated:YES completion:nil];
}
我用户按下“取消”按钮,我使用此代码:
- (IBAction)cancelButton:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
当用户按下“完成”按钮时,我希望 VC1 转至 VC2 并显示新项目的属性。我希望这个 segue 对用户是不可见的,所以,他只能看到这个事件链:
按“添加”按钮 -> 模态 VC 出现 -> 按“完成” -> 模态 VC 消失,VC3 已经显示。
我想问的是如何告诉 VC1 用户按下了“完成”按钮?这里可以委托(delegate)吗?如何实现?谢谢。
最佳答案
您应该创建一个委托(delegate)协议(protocol),允许模态视图 Controller 向其创建者发送通知。
@protocol ModalViewControllerDelegate
@optional
- (void)modalViewControllerDidCancel:(ModalViewController *)vc;
- (BOOL)modalViewControllerShouldSave:(ModalViewController *)vc;
@end
然后,在 ModalViewController
中定义一个新属性。 weak
很重要,因为您不希望有任何保留周期。
@property (nonatomic, weak) id <ModalViewControllerDelegate> delegate;
在关闭或保存之前,只需检查委托(delegate)是否已实现方法(通过 -respondsToSelector:
)并发送适当的回调。在创建模态视图 Controller 时不要忘记设置委托(delegate)属性。
关于ios - 对 Modal ViewController 被解雇使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981906/
我的代码需要范围守卫,但是我是否必须手动 Dismiss() 从函数正常退出时所有范围守卫?即 void Deleter(MyClass* obj) { delete obj; } MyCla
当 UIPopoverController 被 UIPopoverController 本身的矩形之外的任何地方触摸解除时,是否有一个方法被调用? 状态: firstView 有一个 navBar。它
为调用实现 twilio,我尝试使用广播接收器而不是 twilio 逻辑的 Activity 。我的广播接收器应该通过 onReceive() 捕捉到 Intent ,但实际上并没有。听到了呼唤!但无
在我的应用程序中,我希望在多个 View 中显示 alertview。所以我所做的只是在实用程序类中编写了一个 alertview 并在任何地方使用它。这工作正常。 我什至尝试设置 但徒劳无功。 实用
我想使用具有以下行为/功能的 PopupWindow: 它是可聚焦的(在内部有交互式控件,例如按钮) 弹出窗口“下”的 View 必须正确使用弹出窗口外的触摸 .. 但弹出窗口必须保留在屏幕上,即使在
我正在为 tvOS 开发应用程序,但在取消 UIAlertController 时遇到问题。我在普通 UIViewController 之上呈现一个 UIAlertController。当我按下电视
我有一个 Controller A,还有一个 UIButton,单击它我将呈现一个新的 Controller B。但问题是 Controller B 首先嵌入了 NAV。所以最终我将介绍 UINavi
当我单击从 Web 服务打开所单击项目的数据的列表项时,我想打开一个 ProgressDialog。ProgressDialog 需要出现,直到被点击项目的 WebContent 被打开。 我知道使用
任何人都可以帮助我防止 alertview 在其按钮单击事件中被解雇吗?? 我有一个 textview 作为我的 alertView 的 subview ,如果 textview 的值为 nil,我不
这是按钮操作: @IBAction func readyPressed(sender: NSButton) { self.dismissController(Hardness)
我正在尝试防止当用户点击弹出窗口外部时弹出窗口被关闭。我似乎对此有其他问题/答案,他们似乎都建议使用 modalInPopover 作为 View 。正如我所看到的那样,我已经在 viewDidApp
我正在将 SFSafariViewController 推送到 UITabBarController 中。但单击 Safari 完成按钮会关闭 UITabBarController。如何预防? 最佳答
我有 2 个 viewcontroller,第一个 VC 包含 backButton。 firstVC.h @protocol DVDelegate -(void)DVViewControllerD
这是我的设置: 导航 Controller :ViewcontrollerA -> ViewControllerB ViewcontrollerB 显示一个 imagePickerController
我使用 ProgressDialog 向用户显示他必须等待,并在用户必须等待时使我的应用程序表面“不可触摸”。我向 progressDialog 添加了一个按钮,如果某些条件为真,它应该开始一些操作。
我目前正在尝试实现移动和导出模式的功能。我所做的就是让用户导航到他们想要将文件移动/导出到的目录,然后在他们选择的目录上调用 dismissGrantingAccessToURL,并附加原始文件的文件
我是一名优秀的程序员,十分优秀!