iOS MediaPlayer makes application crash - ios

If I start with the very minimalist UI implementation consisting of adding a single UIButton (with the corresponding IBOutlet) to the default view in the default storyboard and adding an action method to my controller class, then everything works correctly (i.e. my action gets invoked when I tap the button).
Now, if I simply include MediaPlayer/MediaPlayer.h to my view controller header file, like that:
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
#interface Playing_Video_FilesViewController : UIViewController
#property (nonatomic, strong) MPMoviePlayerController *moviePlayer;
#property (nonatomic, strong) IBOutlet UIButton *playButton;
#end
and add the MediaPlayer framework to the project, it crashes with the infamous "this class is not key value coding-compliant for the key playButton".
If I remove the MediaPlayer framework reference from the project, it stops to crash. If I instead remove the button but leave the MediaPlayer framework, it stops to crash as well.
Is there something else I should do to use MediaPlayer and a basic standard UI at the same time?
Edit:
I circumvented the problem by creating a .xib file instead of using the storyboard, like how it's done in the VideoPlayer sample application which doesn't use storyboards. Same code, but now it works.

I see this whenever I have an outlet or action that is no longer hooked up properly.
1.) Open storyboard
2.) Select playButton
3.) Remove all outlets and actions from this item
4.) Remove plugs from your class that were previously attached (especially in dealloc)
5.) Create new outlet and control-drag from the storyboard to your class. Good to go.
-A little overkill but gets the job done for me everytime.

Related

Adding an IBOutlet to custom class

I'm learning iOS and am new to the concept of IBOutlets - so I'm making a simple app in an attempt to learn how it works.
The problem:
I created an interface using a Storyboard and want to hook it up to an IBOutlet in my custom class ("TapCounter") in order to access (and be able to set) its text field. However when trying to hook my class' #property (nonatomic, weak, readwrite) IBOutlet UILabel* numberOfTapsTextField;
up to the UILabel in the Storyboard the line does not want to attach to the label.
Here is an image of the situation: http://gyazo.com/0050ef0a78772adcad214cdc4603f932 (Dragging a line from the hollow circle next to the #property to the label in the Storyboard does not snap to it).
I have not modified anything of the boilerplate code except for that I added #import "TapCounter.h" in viewController.m
This feels like it should be a very simple thing - but again; I am new to this.
EDIT
Have I got this idea wrong? Should all IBOutlets be in the viewController of a view (and simply be accessed by other custom classes)?
It work like this:
create a CustomView class
add a view in you storyBoard
set class for this custom view as CustomView in identity inspector cmd+opt+3
Create an IBOutlate of your component inside customView
Link those component with respective outlet
Refer Image:

Sharing same properties of ViewController for iPhone Stroryboard and iPad Story Board

I'm developing a universal application.
in the first view, I have the login screen for the user.
In iPhone storyBoard, I have added 2 text field and one button( login check).
I have added properties in ViewController.h file by dragging those objects(Ctrl key + Dragg) to .h file.
I have added code for login check and it is working fine for iPhone.
This is the code in ViewController.h
#property (strong, nonatomic) IBOutlet UITextField *txtUserId;
#property (strong, nonatomic) IBOutlet UITextField *txtUserPwd;
#property (strong, nonatomic) IBOutlet UIButton *btnLogin;
In the iPad storyBoard, I have added 2 text field( userid and password) and i button for login.
So now, I want to bind those objects with the veriable which I declared already in ViewController.h file in case of iPhone.
My questions:
1. What is the right way to bind properties for both storyboard?
2. Am I on the right direction or should I think in a different way to do it?
I am new with iPhone development. Please help.
Thanks.
--Amin
Give your custom class name to storyboard from storyboard utility.
Ensure to link both the storyboards with your Login class. Now go to iPad storyboard, right click the view components and drag them and hover on to the properties you have declared already.

The storyboard is automatically copied to the new project

I have a project in Xcode, lets name it A, in which I have a story board and several views. I only need part of project A. Hence, I made a new project, B, and made a new UIViewController, with xib, and copied the two UIViews from project A to B.
It looks like this now, where RPM Display and Speed Display are copied (by dragging from xib) from A to B.
AnalogDisplayContainer belongs to the class PD_AnalogDisplayContainer, and we have two outlets in class PD_AnalogDisplayContainer:
#property (nonatomic,assign) IBOutlet PD_AnalogDisplay* speedDisplay;
#property (nonatomic,assign) IBOutlet PD_AnalogDisplay* rpmDisplay;
which are connected to the respective views in xib. (We have exactly the same code in project A.) These UIViews have some UILabels as well, which are automatically copied in project B, and I need them as well. You see them here:
Up to here, the description of what I did. Now, the problem:
I have three outlets in class PD_AnalogDisplay.
#property (nonatomic, assign) IBOutlet UILabel* unitLabel;
#property (nonatomic, assign) IBOutlet UILabel* digitalIntegerValue;
#property (nonatomic, assign) IBOutlet UILabel* digitalFloatValue;
However, so strangely, when I click on the small point beside these outlets, it shows me the connections to story board,
and when I click on the connection, I see the whole storyboard and views from project A.
In addition, these connections are not shown when I click on xib.
I searched in project B, there is no storyboard, or all these things I see in the previous picture, in form of code. So I don't know where it all come from. And I get the run time error:
loaded the "RPMViewController" nib but the view outlet was not set.
Yes, it brings previous reference wherever you copy it.
It is happening because the class name is same in project A and B.
Create class name in project B other than class name in project A or slightly change variable name.
Assign that class to your xib file.
You must recreate the IBOutletes from xib file.
Just copy the interface components not the code in .h file.
Observations:
When I move project A to another location makes trick, reference destroyes.

associate existing classes with storyboard

I'm new to iOS developing so please forgive me if the question is too naive. I'm writing an app based on some other's code, and the author the original code generated all UI elements programmatically (no xib/nib files). I want to modify the interface and go with the storyboard approach, so I have to associate the existing classes with the new view controllers I have on storyboard. I changed the "Custom Class" to the existing class via interface builder. But I keep getting this error:
2014-03-12 22:49:56.187 Reader[9064:a0b] The app delegate must implement the window property if it wants to use a main storyboard file.
Any thoughts? I hope I don't have to start over from scratch.
It means exactly what it says. Go to your app delegate file, usually named something like XXAppDelegate.h, then declare the property in the app delegate class like so:
#property (strong, nonatomic) UIWindow *window;

I can't create an outlet in Xcode 5

I am trying to link a create an IBOutlet for a UIWebView Element, however whenever I hold down control and drag from the Storyboard to the ViewController.h file, nothing happens and an outlet is not created. I already have an outlet in this file, however, I would like to create another one. Whenever I go to the view controller for the previous outlet and hold control and drag the element to the ViewController.h file a new outlet is created. Is there a setting that I have enabled that stops this shortcut from working. Is there another way to create an outlet for ios in Xcode 5.0.1 on Mac OSX 10?
Fixed issue. The class of the view controller was UIViewController not ViewController. This meant that the ViewController.h and .m files were not showing up under Automatic. Once changed I could view the ViewController.h and .m files and create outlets in them.
I recommend not using storyboard, while it is a lot easier to use, it doesn't let you do many things. To create a new outlet, go to where you want to create it (this will most likely be a header file) and then type: IBOutlet yourOutletType *yourOutletName so to create a UIWebView you would type:
IBOutlet UIWebView *myWebView
and to create an outlet, such as a UIImageView, you could type
IBOutlet UIImageView *imageView
just remember to hook it up in your .storyboard file.
Again, I recommend not using storyboard, it IS a lot easier, yet it really has lots of limitations

Resources