I'm new to objective-C and strucked at a point ..I'm adding a UILabel(Name)
,UIbutton(Cancel)
in UITableViewCell
and when I click on it UIButton
it shows an alertView with two button Yes and No .When I go for Yes I have to get the corresponding UIlabel(Name)
value of that cell.But I could not understand how to do it ?
This is the code Im writing for creating a UILabel
and UIButton
..
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier=@"Cell";
UITableViewCell* cell=[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]autorelease];
}
NSMutableDictionary *d = (NSMutableDictionary *) [arr objectAtIndex:indexPath.row];
UILabel *name=[[UILabel alloc]initWithFrame:CGRectMake(10, 45, 320,15)];
name .font=[UIFont boldSystemFontOfSize:12];
[name setTextAlignment:UITextAlignmentLeft];
[name setText:[d valueForKey:@"Name"]];
name.tag=112;
[cell addSubview:name];
[name release];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(100.0f, 50.0f, 75.0f, 30.0f);
[btn setTitle:@"Delete Details" forState:UIControlStateNormal];
[cell addSubview:btn];
[btn addTarget:self action:@selector(btnClicked:)
forControlEvents:UIControlEventTouchUpInside];
return cell;
}
- (IBAction)btnClicked:(id)sender
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Are you sure" message:@"You want to delete Details" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[alert show];
[alert release];
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
[alertView dismissWithClickedButtonIndex:0 animated:YES];
}
else
{
//I have to get the corresponding cells UILabel value.
}
Your buttons which you are creating should some how have a variable which points to which cell they are in.
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(100.0f, 50.0f, 75.0f, 30.0f);
[btn setTitle:@"Delete Details" forState:UIControlStateNormal];
[cell addSubview:btn];
[btn addTarget:self action:@selector(btnClicked:)
forControlEvents:UIControlEventTouchUpInside];
should be
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
// The below line will add a state to each button which you can use to later differentiate in your method: btnClicked
[btn setTag:indexPath.row];
btn.frame = CGRectMake(100.0f, 50.0f, 75.0f, 30.0f);
[btn setTitle:@"Delete Details" forState:UIControlStateNormal];
[cell addSubview:btn];
[btn addTarget:self action:@selector(btnClicked:)
forControlEvents:UIControlEventTouchUpInside];
you can set some variable which is global to the class like "selectedRow". You can declare it on the top of the class after the line @implementation. Look for a line called
@implementation yourClassName
//Add the below declaration. This is a global variable in your class, which you can set in one method and access in other methods
int selectedRow;
and in btnClicked
//Add the below line
selectedRow=[sender tag];
and in the final method of alertView clickedAlert at
// NSLog(@"Name selected is ",[arr objectAtIndex:selectedRow] objectForKey:@"Name"]);