Using a random integer to call an object - iphone

If I have a random integer e.g. randomInt and want to call a created button e.g. UIButton *button1, button2, button3 etc.
Will I be able to call the button as follows
NSString *buttonNumber = [NSString stringWithFormat:#"button%d", randomInt];
[buttonNumber setImage:[UIImage imageNamed:#"someImage.png"] forState:UIControlStateNormal];
I have a lot of these and it would decrease code amount dramatically.
Thanks

Create then Store your buttons in an NS(Mutable)Array then access them using:
UIButton* button = [buttonArray objectAtIndex:randomInt];

When you create the button assign a tag to the button like
button.tag = number
you can get the button later with
[[parentview viewWithTag:randomInt] setimage:...]

If the UIButtons are properties of your self object, you can do it like this:
[[self valueForKey:buttonNumber] setImage:...]

Its better to use the tags with the button. It will help you a lot and it will reduce the code than you currently are using.
-hAPPY iCODING...

Related

Radio Button implemetation with GSRadioButtonSetController not changing state in reference to color

I am using GSRadioButtonSetController for the radio button implementation...I created two buttons and included in IBOutletCollection(UIButton) NSArray *buttonCollection....then I included GSRadioButtonSetController.h and GSRadioButtonSetController.m file to my project. Then to my viewdidload I added
// Instantiate your GSRadioButtonSetController object
self.radioButtonSetController = [[GSRadioButtonSetController alloc] init];
// Set its delegate to your view controller
self.radioButtonSetController.delegate = self;
// Set its buttons property to an array of buttons that you've
// created previously.
self.radioButtonSetController.buttons = buttonCollection;
and then I put
- (void)radioButtonSetController:(GSRadioButtonSetController *)controller
didSelectButtonAtIndex:(NSUInteger)selectedIndex
{
//implemetation
}
There are tow image for the button...one for the select state and 2nd for the deselcetd state....the code is giving me indexes however I dont know how to change to image dynamically so that user know which one is selected and which one is not...
Thanx in advance
When you create the buttons to add to `buttonCollection', set image to buttons, like:
[button_1 setImage:[UIImage imageNamed:#"radio_button_off.png"] forState:UIControlStateNormal];
[button_1 setImage:[UIImage imageNamed:#"radio_button_on.png"] forState:UIControlStateSelected];
it worked for me

Adding arguments to selector in addTarget

I'm having trouble adding arguments to the selector of a button (programmatically created). I've looked around the internet and tried some things, but I can't figure it out.
I create a button with the following line:
NSString *someThing = [[NSString alloc] initWithString:#"someThing"];
int counter = 4;
[anotherButton addTarget:self action:#selector(alertPressed:) forControlEvents:UIControlEventTouchUpInside];
I've got the function alertPressed:
-(void)alertPressed:(id)sender {
}
How can I transfer those two variables to alertPressed?
You can subclass UIButton, with a custom button that contains those attributes. Then, your (id)sender can be cast to your custom button and you can obtain the set values.
Why not global variables or properties in your class?

Access UIButtons like buttonName+i

I'm trying to change the properties of various UIButton that I have declared as follows:
UIButton * button1; UIButton *
button2; ....
It's possible to access them in a similar way to this?
[button+i setTitle:#"button"
forState:UIControlStateNormal];
The variable "i" would be an integer to distinguish one from button from another.
you need to use the tag property of UIButton, which is an integer
EDIT to show tag property
UIButton* myButton .... // whichever way your button is init'd
// set the tag
myButton.tag = 2; // or i or whatever way you set it the property is an int
// get the tag
int y = myButton.tag; // set y to the tag value of the button
its that easy
Do you have lots and lots of button?
Okay, the immediate best way I can think of is something I have put into practice when I had something like 30+ buttons on a screen (it was a calendar).
I created an array into which I put the button then accessed them like this (or something like this)
for (UIButton* b in myBigArrayOfButtons) {
[b setTitle:#"button" for State:UIControlStateNormal];
}

Best radio-button implementation for IOS

I would like to ask if there are examples out there on how to implement radio-button options on an iPhone app.
I find the Picker View quite big for a simple selection feature.
I'm not sure if Apple excluded radio buttons on purpose, and whether if it is better to simply use a Picker View from a usability / user experience point-of-view.
I have some thoughts on how the best radio button implementation should look like. It can be based on UIButton class and use it's 'selected' state to indicate one from the group. The UIButton has native customisation options in IB, so it is convenient to design XIBs.
Also there should be an easy way to group buttons using IB outlet connections:
I have implemented my ideas in this RadioButton class. Works like a charm:
Download the sample project.
Try UISegmentedControl. It behaves similarly to radio buttons -- presents an array of choices and lets the user pick 1.
Just want to sum up, there might be 4 ways.
If you don't have much space, add a click event for text or button, then show UIPickerView:
or open a new table view control with a check mark:
If there is more space, add a table view directly to your main view:
The final solution is using UISegmentedControl:
Hope this helps.
Try DLRadioButton, works for both Swift and ObjC. You can also use images to indicate selection status or customize your own style.
Check it out at GitHub.
**Update: added the option for putting selection indicator on the right side.
**Update: added square button, IBDesignable, improved performance.
**Update: added multiple selection support.
I know its very late to answer this but hope this may help anyone.
you can create button like radio button using IBOutletCollection. create one IBOutletCollection property in our .h file.
#property (nonatomic, strong) IBOutletCollection(UIButton) NSArray *ButtonArray;
connect all button with this IBOutletCollection and make one IBAction method for all three button.
- (IBAction)btnTapped:(id)sender {
for ( int i=0; i < [self.ButtonArray count]; i++) {
[[self.ButtonArray objectAtIndex:i] setImage:[UIImage
imageNamed:#"radio-off.png"]
forState:UIControlStateNormal];
}
[sender setImage:[UIImage imageNamed:#"radio-on.png"]
forState:UIControlStateNormal];
}
For options screens, especially where there are multiple radio groups, I like to use a grouped table view. Each group is a radio group and each cell a choice within the group. It is trivial to use the accessory view of a cell for a check mark indicating which option you want.
If only UIPickerView could be made just a little smaller or their gradients were a bit better suited to tiling two to a page...
I've written a controller for handling the logic behind an array of radio buttons. It's open source and on GitHub, check it out!
https://github.com/goosoftware/GSRadioButtonSetController
The following simple way to create radio button in your iOS app follow two steps.
Step1- Put this code in your in viewDidLoad or any other desired method
[_mrRadio setSelected:YES];
[_mrRadio setTag:1];
[_msRadio setTag:1];
[_mrRadio setBackgroundImage:[UIImage imageNamed:#"radiodselect_white.png"] forState:UIControlStateNormal];
[_mrRadio setBackgroundImage:[UIImage imageNamed:#"radioselect_white.png"] forState:UIControlStateSelected];
[_mrRadio addTarget:self action:#selector(radioButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
[_msRadio setBackgroundImage:[UIImage imageNamed:#"radiodselect_white.png"] forState:UIControlStateNormal];
[_msRadio setBackgroundImage:[UIImage imageNamed:#"radioselect_white.png"] forState:UIControlStateSelected];
[_msRadio addTarget:self action:#selector(radioButtonSelected:) forControlEvents:UIControlEventTouchUpInside];
Step2- Put following IBAction method in your class
-(void)radioButtonSelected:(id)sender
{
switch ([sender tag ]) {
case 1:
if ([_mrRadio isSelected]==YES) {
// [_mrRadio setSelected:NO];
// [_msRadio setSelected:YES];
genderType = #"1";
}
else
{
[_mrRadio setSelected:YES];
[_msRadio setSelected:NO];
genderType = #"1";
}
break;
case 2:
if ([_msRadio isSelected]==YES) {
// [_msRadio setSelected:NO];
// [_mrRadio setSelected:YES];
genderType = #"2";
}
else
{
[_msRadio setSelected:YES];
[_mrRadio setSelected:NO];
genderType = #"2";
}
break;
default:
break;
}
}

how to add an icon to an UIActionSheet button?

I hope to know how to add an icon to an UIActionSheet button?
I checked some document but no result.
Welcome any comment
Thanks
interdev
Although there is no API, it is a simple property you can change.
You can access each UIButton image like so:
SEL buttonsSEL = #selector(buttons);
if([yourUIActionSheet respondsToSelector:buttonsSEL]) {
NSString *buttonsSel = NSStringFromSelector(buttonsSEL);
[[[yourUIActionSheet valueForKey:buttonsSel objectAtIndex:yourIndex]
setImage:[UIImage imageNamed:#"yourImage.png"]
forState:UIControlStateNormal];
...
}
where
yourUIActionSheet is a UIActionSheet*
yourIndex is an int representing the button index, starting at 0
No way to do this with the current SDK.