标签: viewdidload

刷新应用程序进入前台的视图控制器内容

我有一个带有标签栏的应用程序,该标签栏包含一些包含用户生成内容的标签.当每个视图控制器加载时,viewDidLoad方法向服务器发出HTTP请求以获取数据,然后相应地填充其视图.但是,一旦加载了所有数据,视图将保持不变(除非卸载并重新加载视图控制器).

许多其他具有用户生成内容的应用程序具有类似的行为,除非每个视图将重新加载,如果应用程序进入后台然后再次返回到前台.也就是说,当用户在应用程序处于活动状态时在各个选项卡之间切换时,内容将不会自动刷新.如果用户"退出"应用程序然后稍后返回,则将重新加载视图.

是否有设计应用程序的标准做法以这种方式行事?具体来说,我想知道是否有UIKit细节,我可以利用它来刷新我对应用程序"重启"的看法.

否则,我想一个简单的方法是让每个视图控制器在viewDidLoad中注册通知,并监听应用程序进入前台.然后,控制器可以通过重新加载其数据来响应每个通知.

iphone nsnotifications uiviewcontroller viewdidload multitasking

3
推荐指数
1
解决办法
3216
查看次数

使用loadView时未调用viewDidLoad

任何人都可以解释为什么在使用loadView时不会调用viewDidLoad?我的理解是viewDidLoad应该仍然被调用.

- (void)loadView
{
    CGRect currentFrame = [[UIScreen mainScreen] applicationFrame];

    UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(currentFrame.origin.x, currentFrame.origin.y, currentFrame.size.width, currentFrame.size.height)];
    myView.backgroundColor = [UIColor redColor];

    self.view = myView;
    [myView release];

    [super loadView];
}

- (void)viewDidLoad {

    //this never happens
    NSLog(@"VIEW DID LOAD!");
    [super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)

iphone xcode objective-c viewdidload loadview

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

viewDidLoad被调用两次

viewDidLoad在视图控制器中被调用两次.一旦通过[UIViewController View],并通过第二次[UINib instanciateWithOwner:Options].为什么会这样?可以预防吗?

谢谢

uiviewcontroller uikit viewdidload ios viewcontroller-lifecyle

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

在viewDidLoad中运行MPMoviePlayerController的奇怪行为

MediaPlayer我的应用程序启动后,我正在使用该框架播放相当大的电影(~200 MB).当我尝试在我的视频中播放视频时viewDidLoad,断点表示视图已添加,但视频未显示在设备上.

然后,我设置了一个按钮,以确认视频是否正常工作.从按钮运行IBAction显示没有问题.

所以那时我很难过.我想知道这是否与视频在应用程序启动后立即被调用的事实有关.所以我NSTimer在viewDidLoad调用中加了一个延迟5秒的时间.瞧,它运作良好.除非有最初的延迟,否则任何人都可以了解为什么视频无法播放?代码如下.

- (void)viewDidLoad {
      NSTimer *currentTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(playMovie) userInfo:nil repeats:NO];
        [[NSRunLoop mainRunLoop] addTimer:currentTimer forMode:NSRunLoopCommonModes];
      [super viewDidLoad];
}

-(IBAction)playMovie
{  
    NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"Speed" ofType:@"mov"];  
    NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];  
    MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];  

    [[NSNotificationCenter defaultCenter] addObserver:self  
                                             selector:@selector(moviePlaybackComplete:)  
                                                 name:MPMoviePlayerPlaybackDidFinishNotification  
                                               object:moviePlayerController];  

    [self.view addSubview:moviePlayerController.view];  
    moviePlayerController.fullscreen = YES;  
    [moviePlayerController play]; 
}  
Run Code Online (Sandbox Code Playgroud)

cocoa-touch mpmovieplayercontroller nstimer viewdidload ios

3
推荐指数
1
解决办法
1629
查看次数

iOS - 将Sender(按钮)名称传递给addSubview

我有一个带3个按钮的主视图.单击任何按钮可添加SubView.

按钮具有不同的标题,并且都链接到IBAction"switchView"

"switchView"代码如下.

- (IBAction)switchView:(id)sender{
    secondView *myViewController = [[secondView alloc] initWithNibName:@"secondView" bundle:nil];
    [self.view addSubview:myViewController.view];
}
Run Code Online (Sandbox Code Playgroud)

"secondView"正确加载,一切正常.

问题是我希望能够知道哪个按钮是发件人.

我不想创建3个子视图,每个按钮一个.代码和XIB绝对相同>

唯一的区别是我想在第二个视图(viewDidLoad方法)中设置的变量,具体取决于发件人是谁(单击了哪个按钮)

这可能吗?或者我需要创建3个子视图 - 每个按钮一个?

非常感谢您的帮助!

subview uibutton viewdidload sender ios

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

在didSelectRowAtIndexPath之前调用viewDidLoad

viewDidLoad(之前的tableView)被调用didSelectRowAtIndexPath(当前tableView).

我使用'singleton'来保持我的模型,到目前为止,它一直运作良好.我试图通过设置变量in 将当前表中选择的行传递didSelectRowAtIndexPath到目标tableview(它们通过故事板中的segue链接)didSelectRowAtIndexPath.

但是,在我可以设置行号之前调用viewDidLoad目标tableview.didSelectRowAtIndexPath稍后调用,但到那时我已经为目标表设置了我的数据(错误地).

objective-c uitableview viewdidload didselectrowatindexpath ios

3
推荐指数
1
解决办法
1202
查看次数

错误:从JSON文件发送到NSMutableArray的不可变对象的Mutating方法

这似乎是一个相当普遍的问题,但我所看到的解决方案并没有解决错误.我试图从JSON文件中读取NSMutableArray.我见过的许多建议涉及使用mutableCopy[NSMutableArray arrayWithArray:],但这两个解决方案在使用调用replaceObjectAtIndex:withObject时都没有解决问题:见下文.如果您对如何解决此问题有任何建议,请告诉我.

编辑:我还想补充说,库存清单是NSMutableArray对象的NSMutableArray.

确切的错误如下:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: '-[__NSCFArray replaceObjectAtIndex:withObject:]: 
mutating method sent to immutable object'
Run Code Online (Sandbox Code Playgroud)

我在我的实现文件的顶部定义了如下属性:

NSMutableArray *inventoryData;
Run Code Online (Sandbox Code Playgroud)

我试图从JSON文件中读取它,如下所示:

- (void)readJSON
{
    //Code to get dictionary full of saves from JSON file (overworld.json) - includes the file path on the ipad as well as
    //the dictionary itself
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *localPath = [[NSString alloc] initWithString:[documentsDirectory stringByAppendingPathComponent:@"savedPaintGameData.json"]];
    NSString …
Run Code Online (Sandbox Code Playgroud)

xcode objective-c popup viewdidload

3
推荐指数
1
解决办法
2483
查看次数

ViewController如何知道它专注于iOS?像"viewDidLoad"

我有一个NavigationController,其中一个选项卡应该加载一个ViewController.

这个ViewController(1)加载到"viewDidLoad"时会做一些事情,然后推送一个新的ViewController(2).问题是,在ViewController(1)已经通过viewDidLoad之后,它将不会再次通过它,除非重新启动应用程序.

你们可以请一个聪明的方法来参考吗?

这就是我真正在做的事情:

- (void)viewDidLoad
{
    // Keep track of cash using NSUserDefaults
    BOOL dreceived[63];
    int rightData;

    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    //Load cash switches
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
    NSData *data = [prefs objectForKey:@"dreceived"];
    memcpy(&dreceived, data.bytes, data.length);

    for(int n = 72; n >= 1; n = n - 1)
    {
        if(dreceived[n-1]==1)
        {
            rightData = n;            

        }
    }
    NSLog(@"Right Data %d", rightData);

    CashItem *c = [cashflow objectAtIndex:rightData];

    // Go for …
Run Code Online (Sandbox Code Playgroud)

xcode viewdidload viewcontroller navigationcontroller ios

3
推荐指数
1
解决办法
4590
查看次数

使用popViewController SWIFT时调用viewdidload

我有一个导航视图控制器,我popViewControllerAnimated(true)用来显示之前显示的视图控制器.它工作但我需要调用viewDidLoad之前显示的视图控制器来重新加载表视图.在viewDidLoad使用时,不叫popViewControllerAnimated(true).那我该怎么办呢.

uinavigationcontroller viewdidload ios swift

3
推荐指数
1
解决办法
1913
查看次数

如何使用NSUserDefaults保存和加载UITextField?

可能重复:
如何保存和加载UITextField?

我已经尝试过一切,不幸的是没有什么对我有用.我可能已经测试了大约10种保存和加载UITextFields的方法,但它们不起作用.我有六个UITextFields并希望在按下按钮时保存它们并在调用viewDidLoad时加载它们.

我可以得到一些帮助,因为我必须在接下来的一两天内发布应用程序,但我仍然无法做到这一点......

谢谢,

詹姆士

xcode nsuserdefaults uitextfield viewdidload ios

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