以下代码在 a 中工作UIViewController,但在我的类中,UITableViewCell它给出了错误
使用未解析的标识符“存在”。
代码是一个动作:
@IBAction func linkAction(_ sender: Any) {
let linkString = self.linkText.text
if let requestUrl = URL(string: linkString!) {
let safariVC = SFSafariViewController(url: requestUrl)
present(safariVC, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
有解决办法吗?
我有三个View Controller VC1,VC2和VC3.
VC2是第三方库,它在VC1上呈现.
然后VC2解散自己并向VC1发送回调,VC1尝试向自己呈现VC3但失败了.
解雇VC2后有没有办法立即呈现VC3?
-(void)onDismisLoginVC{
MessageVC *messageVC = [[MessageVC alloc] initWithNibName:@"MessageVC" bundle:nil];
[self.navigationController presentViewController:messageVC animated:YES completion:NULL];
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我无法^completion在VC2中使用解除显示的viewcontroller的块,因为我只是接收到这个方法的回调而无法编辑VC2的代码.
我有一个UITabBarViewController包含4个单独的ViewControllers.每个VC都有UIBarButtonItem他们NavigationBar带你去"postPage".您可以使用此代码进入帖子页面,该代码显示嵌入式代码NavigationController
- (void)postInvoked:(UIBarButtonItem *)sender
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *postPage = [storyboard instantiateViewControllerWithIdentifier: @"postPageLead"];
[self presentViewController:postPage animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
然后在PostViewController.m,我有一个IBAction当用户点击UIBarButtonItem命名为"后退" 时触发:
- (IBAction)backOnPost:(UIBarButtonItem *)sender
{
[self.parentViewController.navigationController popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.请记住,一旦到达邮局,就不会记住呼叫VC.如何遍历原始调用ViewController?(如何引用调用者,popViewControllerAnimated是必需的?)
尝试通过理解基本级别的代码行来巩固我的知识.
我已经调整了我的应用程序,使用ViewController(VC)2作为初始VC而不是VC1.
我正在练习完全通过代码填充这个VC2.当编码UIButton以转换为VC1时,我的控制台输出"致命错误:在解开可选值时意外发现nil"(lldb).和线程1指向VC1 viewDidLoad(VDL),我在其中设置了一些属性
VC1
override func viewDidLoad() {
super.viewDidLoad()
P1Chip.hidden = true; P2Chip.hidden = true; P3Chip.hidden = true; P4Chip.hidden = true; P5Chip.hidden = true; P6Chip.hidden = true; P7Chip.hidden = true; P8Chip.hidden = true; P9Chip.hidden = true
etc
Run Code Online (Sandbox Code Playgroud)
当VCL是初始VC时,这个VC1没有任何问题.
填充VC2的方法
import Foundation
import UIKit
class VC2: UIViewController {
let home:UIButton! = UIButton(frame: CGRectMake(10,10,15,15)) as UIButton
override func viewDidLoad() {
super.viewDidLoad()
home.backgroundColor = UIColor(red: 0.4, green: 0.6, blue: 0, alpha: 1)
home.setTitle("home", forState: .Normal)
home.addTarget(self, action: "home:", forControlEvents: .TouchUpInside)
view.addSubview(home)
} …Run Code Online (Sandbox Code Playgroud) 我在另一个视图控制器(A)上展示了一个视图控制器(B),我希望 B 的背景是透明的,以便 A 在背景中仍然可见。
因此,在呈现B之前,将其modalPresentationStyle设置为.overCurrentContext并且B具有view.backgroundColor = UIColor.clear,以便呈现透明背景。
但是,当我关闭 B 并返回到 A 时,A 的方法(如viewDidAppear、viewWillAppear等)不会重新触发。
如果我将上面的内容更改modalPresentationStyle为.fullScreenviewWillAppear那么当返回到 A 时将会重新触发,但这一次,我失去了透明背景。
总而言之,如何在所呈现的视图上实现透明背景并在viewDidAppear返回 A 时重新触发方法(例如在 A 上)?