抬头:这个问题与最近的弃权有关viewDidUnload.我已经看到围绕这个主题的"伟大"和合乎逻辑的答案,但显然他们被证明是错误的.谨慎行事,如您所见,这个话题非常混乱.
但是,当视图未附加到窗口时,系统会自动释放这些昂贵的资源.大多数视图使用的剩余内存足够小,系统自动清除和重新创建视图层次结构是不值得的.
所以...我可以安全地假设在iOS 6中,只要我没有将viewController的视图显式设置为nil(手动卸载),viewDidLoad在应用程序的整个生命周期内,只会为任何已分配的viewController实例调用一次?
我正在尝试设置一个全局变量.在我的例子中,只是一个布尔标志,指示是否第一次呈现视图:
var initialLoadFlag: Bool = true
Run Code Online (Sandbox Code Playgroud)
在显示视图后,我想将此标志设置为false:
var initialLoadFlag: Bool = false
Run Code Online (Sandbox Code Playgroud)
然后检查它:
if initialLoadFlag {
showWelcomeMessage()
}
Run Code Online (Sandbox Code Playgroud)
所以,我想创建initialLoadFlag一个全局变量.在哪里以及如何?我试过了:
viewDidLoad我的视图控制器区域application()我的AppDelegate.swift文件中的方法中AppDelegate课堂上没运气.我收到一条Use of unresolved identifier 'initialLoadFlag'错误消息
(注意:我意识到在这个问题中,我背叛了我对Swift如何处理范围的无知.请原谅我......我正处于截止日期,并且仍然对语言不熟悉.)
谢谢你的帮助.
阅读关于iOS开发的几本教程和书籍我经常遇到一些术语:UIViewController生命周期和UIView生命周期.我很感兴趣:这两个术语之间是否存在实际差异?看苹果的文档我发现,如方法viewDidAppear或者loadView是视图控制器的生命周期的一部分,但我认为这是比较正确的,指他们作为视图生命周期和方法,如initWithNibName或dealloc作为控制器的生命周期.或者没有这样的分离,当有人谈到观看生命周期时,他实际上意味着UIViewController生命周期?
我在我的应用程序中使用此库来设置横幅广告.我试图通过解析JSON来获取链接.
图像未显示在slideshow视图中.如果我按下slideshow视图,之后一切正常.我认为我的完成处理程序存在一些问题.但我还是解决不了:)
@IBOutlet weak var slideshow: ImageSlideshow!
var transitionDelegate: ZoomAnimatedTransitioningDelegate?
var Banner : [AlamofireSource] = []
override func viewDidLoad() {
super.viewDidLoad()
Banners { (imagesource) in
if imagesource != nil {
self.bannershow()
}
}
}
func Banners(completionHandler: ([AlamofireSource]?) -> ()) -> (){
Alamofire.request(.GET, "http://46.420.116.11/mobileapp/gps/api.php?rquest=get_banners")
.responseJSON{ response in
if let data = response.result.value{
let json = JSON(data)
let count = json["image_path"].count
for index in 0...count-1 {
let image :String = json["image_path"][index].stringValue
let source : AlamofireSource = …Run Code Online (Sandbox Code Playgroud) 我一直试图理解我应该使用viewDidload几个小时:当我应该使用initWithNibName:来设置我的viewController的属性.
例如,我正在使用TableViewController,并且我在initWithNibName中设置了它的所有属性(例如backgroundColor,separateColor,工具栏项).这是正确的方法吗?
如果有人能够启发我.
谢谢
我试图向viewDidLoad和viewDidAppear添加动画,但它不起作用:
- (void)viewDidAppear:(BOOL)animated{
[UIView beginAnimations:@"transition" context:NULL];
[UIView setAnimationTransition:110 forView:self.view cache:YES];
[UIView commitAnimations];
}
Run Code Online (Sandbox Code Playgroud)
为什么?
.
你好,
我正在尝试以编程方式将UIButton和其他项添加到我的UIViewController中,并从我在其他SO问题中阅读和看到的内容,我应该使用以下代码在正确的轨道上:
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton = [[UIButton alloc] init];
backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(10, 25, 150, 75);
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
backButton.titleLabel.text = @"Back";
[self.view addSubview:backButton];
// Do any additional setup after loading the view.
}
Run Code Online (Sandbox Code Playgroud)
现在代码放在viewDidLoad方法中并且它没有出现,这引出了我的问题 - 我做错了什么?
当我想要更改背景的颜色并放入viewDidLoad时,它可以正常工作.
干杯杰夫
我有三个视图(视图1检查服务器连接,视图2显示主要内容,view3显示支持页面),我在故事板中创建它们而不编码.在启动我的iOS应用程序时,视图1在检查服务器连接时显示一个微调器.如果连接检查通过,那么我想去查看2,如果它失败了,那么我想去查看3.视图1仅用于连接检查,我不想回到这个视图.所以,我想我不需要导航控制器,或者?
在故事板中,我将所有视图与seques连接起来.在我的视图控制器1中我这样做:
override func viewDidLoad() {
super.viewDidLoad()
let result:Bool = server.isServerAvailable(myURL)
if (result == true) {
performSegueWithIdentifier("ConnectionCheckToMain", sender: self)
}
else {
performSegueWithIdentifier("ConnectionCheckToSupport", sender: self)
}
}
Run Code Online (Sandbox Code Playgroud)
但是这个viewDidLoad()函数中的segue 不起作用,但我不知道为什么.我在视图上添加了一个按钮来检查它.我已经实现了相同的代码viewDidLoad(),它工作正常.单击按钮时,将加载下一个视图.
有什么想法代码不起作用吗?
我正在构建一个应用程序(在XCode 8.2.1中),其中一些对象显示在2D板上,当用户点击其中一个对象时,应该将某些信息显示为样式模态信息框.我的设计是将信息写在一个单独的视图控制器中,我会在需要时显示.
我为第二个视图控制器设计了一个基本存根,并在界面构建器中为它添加了一个标签.然后我将此标签ctrl链接到我的自定义VC类:
class InfoViewController: UIViewController {
@IBOutlet weak var info: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
func displayInfo() {
info.attributedText = NSAttributedString(string: "abc")
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我测试我的应用程序并点击该对象时,该info字段nil甚至在viewDidLoad()我的自定义VC类的方法中.我正在显示我的VC的方式如下:
let infoViewController = InfoViewController()
infoViewController.modalPresentationStyle = .overCurrentContext
self.present(infoViewController, animated: true, completion: nil)
infoViewController.displayInfo()
Run Code Online (Sandbox Code Playgroud)
(注意:最后我将只有一个实例,InfoViewController但这只是用于测试.我不希望全局实例会有任何区别吗?)
正如我所说,无论是在viewDidLoad()方法内部还是在displayInfo()方法中,info总是nil如此,设置其attributedString属性会使应用程序崩溃.认为这个present方法可能是异步调用的,我试过displayInfo()从内部调用viewDidLoad(),但这没有任何区别.
任何人都可以告诉我我忘记了什么会让我IBOutlet正确地初始化吗?
谢谢!
大卫
两者有什么方法之间的差异didFinishLaunchingWithOption和viewDidLoad?
前者是一种方法,AppDlegate.m
后者是一种方法ViewController.m,但它们都执行将UI加载到视图上的相同任务.
viewdidload ×10
ios ×5
swift ×4
xcode ×3
iphone ×2
objective-c ×2
uiview ×2
flags ×1
global ×1
ios6 ×1
segue ×1
storyboard ×1
uibutton ×1
uikit ×1