2015-03-03 4 views
0

У меня есть табличный вид, в ячейке таблицы у меня есть две кнопки и проверка их условий. его работа, но моя проблема в том, что я хочу проверить условие кнопки для каждой отдельной ячейки в представлении таблицы. Кто-нибудь может мне помочь.проверка условий для каждой отдельной ячейки

button1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
button1.frame = CGRectMake(80, 27, 36, 36); 
[button1 setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"l"ofType:@"png"]] forState:UIControlStateNormal]; 
button1.tag = indexPath.row; 
[button1 addTarget:self action:@selector(radiobtn:) forControlEvents:UIControlEventTouchUpInside]; 
[cell.contentView addSubview:button1]; 

button2 = [UIButton buttonWithType:UIButtonTypeCustom]; 
button2.frame = CGRectMake(160, 27, 36, 36); 
[button2 setImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"e"ofType:@"png"]] forState:UIControlStateNormal]; 
button2.tag = indexPath.row; 
[button2 addTarget:self action:@selector(radiobtn:) forControlEvents:UIControlEventTouchUpInside]; 
[cell.contentView addSubview:button2]; 

- (void)radiobtn:(UIButton *)button 
{ 
    if(btn3 == 0) { 
if ([button isSelected]) { 
    [button setImage:[UIImage imageNamed:@"l.png"] 
      forState:UIControlStateNormal]; 
[[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"button1"]; 
[button setSelected:NO]; 
} else { 
    [button setImage:[UIImage imageNamed:@"lblue.png"] 
      forState:UIControlStateSelected]; 
[button setSelected:YES]; 
else{ 
} 
} 
- (void)radiobtn3:(UIButton *)button 
{ 


if(btn1 == 0) 
{ 
if ([button isSelected]) { 
    [button setImage:[UIImage imageNamed:@"v.png"] 
      forState:UIControlStateNormal]; 
    [[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"button3"]; 

} 


[button setSelected:NO]; 
} else { 
    [button setImage:[UIImage imageNamed:@"vblue.png"] 
      forState:UIControlStateSelected]; 
    [button setSelected:YES]; }} 
else { 
} 

условия работают хорошо. но я хочу проверить условия для каждой отдельной ячейки. Помогите мне в кодировании.

+1

Вы не должны держать состояние, которое вы проверяете, в клетке. Поскольку ячейки повторно используются, они представляют только данные, которые затем заполняются. Таким образом, вы указываете, что должны храниться в объекте, который заполняет ячейку. – rckoenes

+0

@rckoenes Я новичок в ios, вы можете мне помочь в кодировании – Raj

ответ

0

Вам необходимо установить теги для каждой кнопки, которую вы выделяете, в зависимости от вашего indexPath.row в методе datasource cellForRowAtIndexPath вашего UITableView. This link может помочь вам.

+0

Я пробовал это не помогать, может помочь мне в кодировании – Raj

+1

вам нужно узнать об основах UITableView и его соответствующих источниках данных и делегировать методы, прежде чем перейти к созданию объективного c приложения. Пройдите через учебные пособия, пожалуйста. –

+0

http://www.appcoda.com/ios-programming-tutorial-create-a-simple-table-view-app/ –

0

Поддержание одного array для проверки state от UIButton, который будет class member.

Добавить #define для каждой кнопки, чтобы однозначно знать, какая кнопка состояние, которое мы имеем в виду, как это:

#define kFirstBtnState @"firstbuttonstate" 
#define kSecondBtnState @"secondbuttonstate" 

Теперь initialize массив в viewDidLoad так:

//use tableview object array here 
for(int i=0; i<[yourDataSourceOfTableViewArray count]; i++) 
{ 
    //Currently each button state is 0 which is false 
    NSDictionary *dictBtnState = [NSDictionary dictionaryWithObjectsAndKeys:@"0",kFirstBtnState,@"0",kSecondBtnState,nil]; 
    [mutArrBtnStateMaintain addObject:dictBtnState]; 
} 

Используйте созданный массив в UITableView'scellForRowAtIndexPath как это:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    .................... 
    .................... 

    //get state list of buttons 
    NSDictionary *dictBtnState = [mutArrBtnStateMaintain objectAtIndex:indexPath.row]; 
    BOOL firstBtnState = [[dictBtnState objectForKey:kFirstBtnState] boolValue]; 
    BOOL secondBtnState = [[dictBtnState objectForKey:kSecondBtnState] boolValue]; 

    //Act according to your requirement 

    return cell; 
} 

Примечание: Replacestate в array при необходимости maintainstate из UIButton

Смежные вопросы