标签: viewdidload

autoResizingMask中的错误

我已经实现了一个小的viewDidLoad()来显示具有自动调整功能的图片,但它不起作用,可以请某人帮助我并说出这行代码在第3行和第4行中的错误是什么?

imageView = [[UIImageView alloc] initWithImage:img];
    imageView.frame = self.view.frame;
    imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
Run Code Online (Sandbox Code Playgroud)

我希望有人可以帮助我?

iphone viewdidload autoresizingmask

2
推荐指数
1
解决办法
774
查看次数

将[super viewDidLoad]放在我的UIViewController中会有什么不同吗?

可能重复:
[super viewDidLoad]约定

它使一个区别在哪里我把[super viewDidLoad]viewDidLoad我的UIViewController?即,它应该在开始之前(在我的代码之前设置UIViewController)或者在我的代码之后设置UIViewController),或者它没有任何区别?

iphone uiviewcontroller viewdidload ios

2
推荐指数
1
解决办法
3489
查看次数

iOS - 在didFinishLaunchingWithOptions委托之前调用viewDidLoad?

我有一个应用程序正在按预期工作.

但是,我在rootViewController的viewDidLoad方法的第一行放了一个断点,在我的委托的didFinishLaunchingWithOptions的第一行放了另一个断点,

令我惊讶的是,应用程序在viewDidLoad方法中输入,然后转到didFinishLaunchingWithOptions,然后再执行一次viewDidLoad方法.

到底是怎么回事?我认为这种行为是完全错误的.

先感谢您!

#编辑

这是我的iPad的委托didFinishLaunchingWithOptions方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{   
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    UtilXML *utilXML = [[UtilXML alloc] init];
    [utilXML startXMLCommunication];
    int quantidadeDeComicsBaixadas = [utilXML quantidadaDeComicsBaixadas];

    main_iPad *mainiPad = [[main_iPad alloc] init];
    mainiPad.quantidadeDeComicsBaixadas = quantidadeDeComicsBaixadas;
    mainiPad.navigationItem.title = @"TitleFirstScreen";

    UIBarButtonItem *botaoSobre = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:mainiPad action:@selector(goToAboutView)];
    mainiPad.navigationItem.rightBarButtonItem = botaoSobre;

    navController = [[UINavigationController alloc] initWithRootViewController:mainiPad];
    navController.navigationBar.tintColor = [UIColor orangeColor];
    navController.navigationBar.translucent = YES;


    [self.window addSubview:navController.view];
    [self.window makeKeyAndVisible];
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

这是我的iPhone的委托didFinishLaunchingWithOptions方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[UIApplication sharedApplication] …
Run Code Online (Sandbox Code Playgroud)

delegates viewdidload ios

2
推荐指数
1
解决办法
5307
查看次数

向NSNotificationCenter添加/删除观察者的最佳实践

添加和删​​除观察者的最佳做法是NSNotificationCenter什么?

我想知道如果加入self作为观察员viewDidLoad和删除selfviewDidUnload就足够了.也许我应该删除selfdealloc为好.

也许需要考虑低内存条件.我可以看到添加viewDidLoad和删除dealloc有问题:viewDidUnload由于内存不足而被调用...然后viewDidLoad在再次显示视图时被调用...现在self已被添加为观察者两次没有删除(因为dealloc不是所谓的).

注意:我正在考虑一个self引用UIViewController子类的基本示例.

dealloc viewdidload nsnotificationcenter ios viewdidunload

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

InitWithNibName和viewDidLoad?

可能重复:
initWithNibName VS viewDidLoad

我是iOS开发的新手.我想知道这两个功能之间的主要区别吗?

谢谢你的帮助

iphone objective-c init viewdidload

2
推荐指数
1
解决办法
1820
查看次数

有没有办法避免在每个segue之后调用viewDidLoad?

我在我的主ViewController中初始化表,数据等.对于更多设置,我想调用另一个Viewcontroller:

 DateChangeController *theController = [self.storyboard instantiateViewControllerWithIdentifier:@"dateChangeController"];
[self presentViewController:theController animated:YES completion:^{NSLog(@"View controller presented.");}];
Run Code Online (Sandbox Code Playgroud)

然后一些点击我返回一个segue(自定义:)

NSLog(@"Scroll to Ticket");
[self.sourceViewController presentModalViewController:self.destinationViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

我的问题:

在返回到我的主ViewController之后,调用了viewDidLoad(每次).我读到,ARC在"转到"另一个ViewController并调用viewDidUnload方法后释放我的mainView,但是我想保留我的所有数据和表格一开始..

有解决方案吗 非常感谢你!

iphone storyboard viewdidload segue

2
推荐指数
1
解决办法
2010
查看次数

关于"做","意志"和"应该"方法的机制

我想知道包含主题中所述关键词的方法被调用的时间.

例如:

– tableView:willSelectRowAtIndexPath:
– tableView:didSelectRowAtIndexPath:
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
Run Code Online (Sandbox Code Playgroud)

willSelectRow方法何时调用?该方法包括关键词"will""did"和"should"是什么意思

同样,有viewDidAppear和viewWillAppear.调用viewDidAppear方法时很明显.但是视图将会超出我的范围.

希望有人可以提供帮助;)

uitableview viewdidload viewdidappear viewwillappear ios

2
推荐指数
1
解决办法
283
查看次数

在ViewDidLoad之前调用UITableView方法

我正在尝试创建一个简单的天气应用程序,它使用JSON从OpenweatherMap获取数据并在UITableView中打印出来.但是,当我执行下面的代码并在numberOfRowsInSection方法中设置断点时,它返回0行.不知何故,该viewDidLoad方法在该numberOfRowsInSection方法之后调用,这就是为什么threeHoursForecast数组为空.有人可以帮我吗?

static NSString * const BaseURLString = @"http://api.openweathermap.org/data/2.5/forecast?q=Houston";

@interface HPViewController ()

@end

@implementation HPViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.threeHoursForecast = [[NSMutableArray alloc] init];
    self.tableView.dataSource = self;
    self.tableView.delegate = self;

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    [manager POST:BaseURLString parameters:nil
          success:^(AFHTTPRequestOperation *operation, id responseObject) {

              NSArray *data = [responseObject objectForKey:@"list"];

              for (NSDictionary *forecastPerThreeHours in data) …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uitableview viewdidload ios

2
推荐指数
1
解决办法
4104
查看次数

ViewController似乎转换两次

问题摘要

我的mainVC - >第二次VC转换似乎运行了两次.然而,奇怪的是第二个VC的viewDidLoad只运行一次.这是我的项目中唯一存在此问题的转换.

我已经研究了这个并发现了两次加载问题,但没有一个与我的转换两次匹配,但加载一次场景.常见问题,例如在故事板中添加了两个segue的人,没有出现在我的项目中:

在此输入图像描述

在我的第一个/根视图控制器(称为mainVC)中,我以编程方式在viewDidLoad中添加边缘平移手势:

        let panLeftEdgeGesture_MainVC = UIScreenEdgePanGestureRecognizer(target: self, action: "panLeftEdge_toLifeList:")
        panLeftEdgeGesture_MainVC.edges = .Left
        view.addGestureRecognizer(panLeftEdgeGesture_MainVC)
Run Code Online (Sandbox Code Playgroud)

当用户滑动该平移手势时,它会触发一个调用segue到下一个VC的函数.问题是,VC转换出现两次,然后一切正常.什么都没有破裂或崩溃.如果我单击我的自定义后退按钮,则退回到mainVC只会出现一次.

关于原因的实验

这是一个奇怪的部分:为了理解什么是理解,我插入了一些println代码,这是控制台打印的内容:

No matching prepareForSegue: So did nothing to prepare.
LifeList_CollectionView viewDidLoad did run
Pan segue from mainVC to Life Lists did run
No matching prepareForSegue: So did nothing to prepare.
Run Code Online (Sandbox Code Playgroud)

第一行是prepareForSegue运行.它说"什么也没做",因为在我的prepareForSegue中它会检查哪个segue正在运行,有时它会传递一些代码.在这种情况下,prepareForSegue只会打印该行.

第二行是第二个VC的viewDidLoad运行.

第三行看起来很怪异而且不合适我,但我不是专家.println位于mainVC中,并且由pan手势调用的函数打印,这是首先触发segue的函数.为什么这不会在第二个VC的viewDidLoad之前打印?:

func panLeftEdge_toLifeList(sender: UIScreenEdgePanGestureRecognizer) {
    performSegueWithIdentifier("segueToLifeLists", sender: nil)
    println("Pan segue from mainVC to Life Lists did run")
}
Run Code Online (Sandbox Code Playgroud)

第四行是mainVC的第二次运行的prepareForSegue.但是,我没有看到控制台打印第二个viewDidLoad,即使在视觉上我看到转换发生两次.

知道什么可能导致这种奇怪的行为,或者至少,任何技巧来阻止这种行为?

viewdidload ios segue uistoryboardsegue swift

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

强制自动布局以在viewDidLoad上正确更新UIView框架

虽然它很简单,但我仍然发现自己正在努力解决正确的问题.

我试图了解在使用自动布局时,在内部找到REAL(或任何其他子视图)帧的正确方法是什么. UIViewviewDidLoad

主要问题是在viewDidLoad中,视图未应用其约束.我知道这种情况的"已知"答案是

override func viewDidLoad() {
        super.viewDidLoad()
     view.layoutIfNeeded()
     stepContainer.layoutIfNeeded() // We need this Subview real frame!
     let realFrame = stepContainer.frame
}
Run Code Online (Sandbox Code Playgroud)

但我发现它并不总是有效,并且不时会给出错误的帧(即不是显示的最终帧).

经过一番研究后,我发现歪曲这段代码可以DispatchQueue.main.async { }得到准确的结果.但是我不确定这是否是正确的处理方法,或者我是否使用此方法导致了一些引擎盖下的问题.最终"工作"代码:

override func viewDidLoad() {
        super.viewDidLoad() 

        DispatchQueue.main.async {
            self. stepContainer.layoutIfNeeded()
            print(self. stepContainer.frame) // Real frame..
        }

}
Run Code Online (Sandbox Code Playgroud)

注意:我只需要从viewDidLoad中找到真正的帧,请不要建议使用viewDidAppear/layoutSubviews等.

uiview viewdidload ios autolayout swift

2
推荐指数
1
解决办法
2157
查看次数