• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: [Q] loadView doesn't return?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Q] loadView doesn't return?


  • Subject: Re: [Q] loadView doesn't return?
  • From: JongAm Park <email@hidden>
  • Date: Fri, 04 Nov 2011 16:40:01 -0700

It turned out that it didn't like to instantiate an NSViewControl class in its xib.
So, instead, I created it in the code and it made "loadView" returns.

However, I still have some problems.

Although audio is played, video is not played.

So, I changed its view class for setting player like this ( by refering ViewController sample codes )

- (void) setPlayer:(AVPlayer *)player
{

//	[(AVPlayerLayer *)[self layer] setPlayer:player];

	AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
	[playerLayer setFrame:[self.layer bounds]];
	[playerLayer setAutoresizingMask:(kCALayerWidthSizable | kCALayerHeightSizable)];
	[self setLayer:playerLayer];
}

However, it still doesn't display any video frame.

Any ideas?

FYI, This is how it looks in ViewController sample codes :
Thank you.

- (void)awakeFromNib
{
	NSString* moviePathStr = [[NSBundle mainBundle] pathForResource:@"adam" ofType:@"mov"];

    player = [[AVPlayer alloc] init];
    AVURLAsset *file = [AVURLAsset assetWithURL:[NSURL fileURLWithPath:moviePathStr isDirectory:NO]];

	[file loadValuesAsynchronouslyForKeys:nil completionHandler:^(void) {

		// The asset invokes its completion handler on an arbitrary queue when loading is complete.
		// Because we want to access our AVPlayer in our ensuing set-up, we must dispatch our handler to the main queue.
		dispatch_async(dispatch_get_main_queue(), ^(void) {

			// Create an AVPlayerLayer and add it to the player view if there is video, but hide it until it's ready for display
            AVPlayerLayer *newPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
            [newPlayerLayer setFrame:[[self.view layer] bounds]];
            [newPlayerLayer setAutoresizingMask:kCALayerWidthSizable | kCALayerHeightSizable];
            [[self.view layer] addSublayer:newPlayerLayer];

            // Create a new AVPlayerItem and make it our player's current item.
            AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:file];
            [player replaceCurrentItemWithPlayerItem:playerItem];

            playingForward = YES;
            [[NSNotificationCenter defaultCenter] addObserverForName:AVPlayerItemDidPlayToEndTimeNotification object:playerItem queue:nil usingBlock:^(NSNotification *note) {
                if(playingForward) {
                    [player seekToTime:CMTimeMultiplyByFloat64(playerItem.duration, 0.99f)];
                    [player play];
                    player.rate = -1;
                    playingForward = NO;
                } else {
                    [player seekToTime:kCMTimeZero];
                    [player play];
                    player.rate = 1;
                    playingForward = YES;
                }
            }];

            [player play];
            [player release];
		});

	}];
}



On Nov 4, 2011, at 9:46 AM, JongAm Park wrote:

>
> Hello,
>
> I tried to use AV Foundation's playback capability.
> So, by following AV Foundation Programming Guideline, it wrote codes for Mac. ( The document is written for iOS. )
> Also, I looked up "View Controller" sample codes and "AnimatedTableView".
>
> What is strange is that it doesn't return after loadView was called in my testing project, although it does in those sample codes.
> I didn't find any semantic difference yet.
>
> This is from my sample codes :
>
> An app delegate class :
>
> - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
> {
> 	// Insert code here to initialize your application
>
> 	NSLog( @"AppDelegate >> applicationDidFinishLaunching" );
>
> 	[_placeholderView addSubview:_viewController.view]; => calls loadView of a child class of NSViewController
> 	[_viewController.view setFrame:_placeholderView.frame];
> 	[_viewController setRepresentedObject:[NSNumber numberWithUnsignedLong:[[_viewController.view subviews] count]]];
> }
>
>
> The child class of NSViewController
>
> - (void)loadView
> {
> 	[self viewWillLoad];
> 	[super loadView]; <= doesn't return
> 	[self viewDidLoad];
> }
>
> Does anyone know why the loadView doesn't return?
> Can you spare me your idea?
>
> Thank you.
>
>

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

References: 
 >[Q] loadView doesn't return? (From: JongAm Park <email@hidden>)

  • Prev by Date: Re: How to detect clicks outside of modal window?
  • Next by Date: Re: Core Data loading faulted object?
  • Previous by thread: [Q] loadView doesn't return?
  • Next by thread: Allocating too much memory kills my App rather than returning NULL
  • Index(es):
    • Date
    • Thread