标签: viewdidload

viewDidLoad在启动时在rootViewController上被调用两次

任何人都知道为什么这个根View Controller's viewDidLoad在发布时被调用了两次?这让我疯了!

这是第一次到第一次的堆栈跟踪viewDidLoad:

#0  0x0000276a in -[RootViewController viewDidLoad] at RootViewController.m:71
#1  0x3097548f in -[UIViewController view]
#2  0x00002734 in -[RootViewController initWithCoder:] at RootViewController.m:39
#3  0x30ab5ce4 in -[UIClassSwapper initWithCoder:]
#4  0x30514636 in _decodeObjectBinary
#5  0x30514035 in _decodeObject
#6  0x30ab5a1d in -[UIRuntimeConnection initWithCoder:]
#7  0x30514636 in _decodeObjectBinary
#8  0x30515f27 in -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
#9  0x305163b0 in -[NSArray(NSArray) initWithCoder:]
#10 0x30514636 in _decodeObjectBinary
#11 0x30514035 in _decodeObject
#12 0x30ab4dde in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:]
#13 0x30ab6eb3 in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:]
#14 0x308f85f1 in …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uiviewcontroller viewdidload

20
推荐指数
3
解决办法
2万
查看次数

viewDidLoad(),LoadView()

viewDidLoad()LoadView()有什么区别?它们以何种方式彼此不同?

在不使用XIB开发应用程序时哪一个更好?

谢谢 .

iphone objective-c viewdidload loadview

16
推荐指数
4
解决办法
3万
查看次数

iOS:如何知道viewDidLoad是否被调用?

是否有BOOL或其他方式知道viewDidLoad:是否已被调用?

每次我的视图进入活动状态时,我都需要更改视图属性,但如果视图尚未加载,我不想过早地触发viewDidLoad:.如果没有方法轻易告诉viewDidLoad:是否已被调用,我只需在视图控制器init 中将一个名为loaded set 的BOOL添加到NO,然后在输入active后更改视图属性(如果已加载为YES)或在viewWillAppear中:如果加载为NO,则将加载设置为YES.

iphone uiviewcontroller viewdidload viewwillappear ios

15
推荐指数
1
解决办法
8617
查看次数

在Autolayout完成时是否会触发iOS方法?

我有一个iOS应用程序,我需要知道什么时候新的视图在屏幕上完全可见; 也就是说,当Autolayout完成计算并且视图已完成绘制时.

在视图完全可见之前,ViewDidAppear似乎很好.如果我关闭Autolayout,时间似乎与人类感知一致,但我需要在这个项目中使用Autolayout(所以这不是一个解决方案......只是一个测试).

当Autolayout完成计算时,是否有任何方法可以触发?或者视图实际可见时触发的另一种方法(因为ViewDidAppear不适用于此)?

谢谢!

viewdidload ios autolayout

13
推荐指数
2
解决办法
8582
查看次数

在执行整个init方法之前调用viewDidLoad

编辑:这是Xcode 6.4的完整代码示例

我有简单的iOS应用程序没有故事板.我设置rootViewControllerUIWindowAppDelegate.swift这样的:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let tabBarController = TabBarController()

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    window?.rootViewController = tabBarController
    window?.makeKeyAndVisible()

    return true
}
Run Code Online (Sandbox Code Playgroud)

TabBarController 类的实现如下:

class TabBarController: UITabBarController {

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

        // Next line is called after 'viewDidLoad' method
        println("init(nibName: bundle:)")
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func viewDidLoad() {
        super.viewDidLoad() …
Run Code Online (Sandbox Code Playgroud)

init uitabbarcontroller viewdidload ios swift

13
推荐指数
2
解决办法
4845
查看次数

viewDidLoad中之前和之后的区别

我试图设置searchBartableHeaderView内部viewDidLoad:

 override func viewDidLoad() {
    super.viewDidLoad()


    // SearchController initializiation
    self.searchController = UISearchController.init(searchResultsController: nil)
    self.searchController.delegate = self
    self.searchController.searchBar.delegate = self
    self.searchController.searchBar.sizeToFit()
    self.searchController.searchResultsUpdater = self
    self.searchController.searchBar.barTintColor = UIColor.white
    self.searchController.searchBar.keyboardAppearance = .default
    self.searchController.searchBar.backgroundColor = UIColor.white
    self.searchController.hidesNavigationBarDuringPresentation = true
    self.searchController.obscuresBackgroundDuringPresentation = false


    self.tableView.tableHeaderView = self.searchController.searchBar
    self.definesPresentationContext = true

    self.fetch()
    self.tableView.reloadData()

}
Run Code Online (Sandbox Code Playgroud)

这是我的fetch()功能:

func fetch() {
    let fetchRequest:NSFetchRequest<Phone> = Phone.fetchRequest()
    fetchRequest.sortDescriptors = [NSSortDescriptor.init(key: "header", ascending: true), NSSortDescriptor.init(key: "date", ascending: true)]

    self.fetchedResultsController = NSFetchedResultsController.init(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext, sectionNameKeyPath: …
Run Code Online (Sandbox Code Playgroud)

core-data viewdidload swift uisearchcontroller

12
推荐指数
1
解决办法
496
查看次数

首次启动时viewDidLoad中的presentModalViewController

我一直在四处寻找,但遗憾的是没有运气.

我的应用要求用户在首次启动应用时登录/注册.我知道如何确定首次启动(使用NSUserDefaults),但每当我尝试呈现包含登录/注册控件的模式时,都没有任何反应.

这就是我所拥有的:

-(void)viewDidLoad {
    [self showLogin];
    [super viewDidLoad];
}

-(void)showLogin {    
    FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"AccountView" bundle:nil];
    controller.delegate = self;

    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:controller animated:YES];

    [controller release];
}
Run Code Online (Sandbox Code Playgroud)

然而,没有任何反应.主视图正常加载.任何帮助是极大的赞赏.

-Giles

iphone objective-c viewdidload

10
推荐指数
2
解决办法
9565
查看次数

viewDidLoad和awakeFromNib时序

据我所知,awakeFromNib将始终在viewDidLoad之前调用.

所以我有一个UITableViewController的子类,它是从xib文件中取消归档的.

我在里面定义了这两个方法:

- (void)awakeFromNib {
  [super awakeFromNib];
  NSLog(@"awake from nib");
}

- (void)viewDidLoad {
  [super viewDidLoad];
  NSLog(@"view did load");
}
Run Code Online (Sandbox Code Playgroud)

会发生什么是"视图确实加载"出现在控制台中"从笔尖唤醒"之前.我试图在[超级awakeFromNib]上使用断点,并反复点击F7(Step Into),令我惊讶的是,它进入 - (void)viewDidLoad之前进入awakeFromNib内的第二行.

有谁知道这里发生了什么?我在常规UIViewController的子类中做了完全相同的事情,并且日志语句被反转,正如我最初期望的那样......

iphone uitableview viewdidload ipad awakefromnib

10
推荐指数
3
解决办法
2万
查看次数

在iOS中的UIView上加载时如何为UIActivityIndi​​cator设置灰色背景

我目前UIActivityIndicator在屏幕上出现了一两秒钟.我想将背景设置为灰色,因为它出现在屏幕上,但我不知道该怎么做...

这是我到目前为止初始化指标的方法.

- (void)viewDidLoad
{
//...

    activity = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
    [activity setCenter:CGPointMake(160.0f, 208.0f)];
    [activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];

    [self.tableView addSubview:activity];

    [activity startAnimating];

    [activity performSelector:@selector(stopAnimating) withObject:nil afterDelay:1.0];


}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

iphone viewdidload uiactivityindicatorview ios

10
推荐指数
3
解决办法
2万
查看次数

在ViewDidLoad中执行Segue

我试图在第一次加载应用程序时执行segue.我可以在调试器中看到我的打印消息,但Perform Segue不起作用.我没有得到任何错误.有人可以告诉我什么错了吗?

import UIKit
import LocalAuthentication
let isFirstLaunch = UserDefaults.isFirstLaunch()
extension UserDefaults {
    // check for is first launch - only true on first invocation after app install, false on all further invocations
    // Note: Store this value in AppDelegate if you have multiple places where you are checking for this flag
    static func isFirstLaunch() -> Bool {
        let hasBeenLaunchedBeforeFlag = "hasBeenLaunchedBeforeFlag"
        let isFirstLaunch = !UserDefaults.standard.bool(forKey: hasBeenLaunchedBeforeFlag)
        if (isFirstLaunch) {

            UserDefaults.standard.set(true, forKey: hasBeenLaunchedBeforeFlag)
            UserDefaults.standard.synchronize()
        }
        return isFirstLaunch
    }
}

class …
Run Code Online (Sandbox Code Playgroud)

xcode viewdidload ios segue swift

10
推荐指数
1
解决办法
5316
查看次数