Проблема с Xcode, iphone, при программировании таблицы - PullRequest
0 голосов
/ 28 февраля 2011

у меня есть сгруппированная таблица, и если я напишу:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        if (indexPath.row == 7){ 

Он не нажимает на седьмую строку ...

У меня есть такой вид UITableView (сгруппированный):

- (void)viewDidLoad {
    NSArray *arrTemp1 = [[NSArray alloc]
                         initWithObjects:@"Scuola/Università",@"Uscita con le amiche",@"Pranzo di lavoro",@"Lavoro",@"Appuntamento",@"All'ultimo momento",nil];
    NSArray *arrTemp2 = [[NSArray alloc]
                         initWithObjects:@"Cena con amici",@"Cena di lavoro",@"Pub/Discoteca",@"Festa elegante",@"Appuntamento",@"All'ultimo momento",nil];
    NSArray *arrTemp3 = [[NSArray alloc]
                         initWithObjects:@"Compleanno",@"Anniversario",@"Matrimonio",@"Laurea/Promozione",@"San Valentino",@"Natale/Capodanno",nil];
    NSArray *arrTemp4 = [[NSArray alloc]
                         initWithObjects:@"Scelta e uso fondotinta",@"Scelta dei colori",@"I pennelli",@"Come sfumare",@"Contouring",@"Labbra perfette",nil];
    NSDictionary *temp =[[NSDictionary alloc]
                         initWithObjectsAndKeys:arrTemp1,@"Trucco da giorno",arrTemp2,
                         @"Trucco da sera",arrTemp3,@"Eventi speciali",arrTemp4,@"Lezioni di base",nil];
    self.tableContents =temp;
    [temp release];
    self.sortedKeys =[[self.tableContents allKeys]
                      sortedArrayUsingSelector:@selector(compare:)];
    [arrTemp1 release];
    [arrTemp2 release];
    [arrTemp3 release];
    [arrTemp4 release];
    [super viewDidLoad];
}

Мне нужно что-то отличное от == 7?

Заранее спасибо

Весь код:

#import "TabellaController.h"

@implementation TabellaController
@synthesize tableContents;
@synthesize sortedKeys;



- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath {  
    return UITableViewCellAccessoryDisclosureIndicator;
}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    NSArray *arrTemp1 = [[NSArray alloc]
                         initWithObjects:@"Scuola/Università",@"Uscita con le amiche",@"Pranzo di lavoro",@"Lavoro",@"Appuntamento",@"All'ultimo momento",nil];
    NSArray *arrTemp2 = [[NSArray alloc]
                         initWithObjects:@"Cena con amici",@"Cena di lavoro",@"Pub/Discoteca",@"Festa elegante",@"Appuntamento",@"All'ultimo momento",nil];
    NSArray *arrTemp3 = [[NSArray alloc]
                         initWithObjects:@"Compleanno",@"Anniversario",@"Matrimonio",@"Laurea/Promozione",@"San Valentino",@"Natale/Capodanno",nil];
    NSArray *arrTemp4 = [[NSArray alloc]
                         initWithObjects:@"Scelta e uso fondotinta",@"Scelta dei colori",@"I pennelli",@"Come sfumare",@"Contouring",@"Labbra perfette",nil];
    NSDictionary *temp =[[NSDictionary alloc]
                         initWithObjectsAndKeys:arrTemp1,@"Trucco da giorno",arrTemp2,
                         @"Trucco da sera",arrTemp3,@"Eventi speciali",arrTemp4,@"Lezioni di base",nil];
    self.tableContents =temp;
    [temp release];
    self.sortedKeys =[[self.tableContents allKeys]
                      sortedArrayUsingSelector:@selector(compare:)];
    [arrTemp1 release];
    [arrTemp2 release];
    [arrTemp3 release];
    [arrTemp4 release];
    [super viewDidLoad];
}

- (void)dealloc {
    [tableContents release];
    [sortedKeys release];
    [super dealloc];
}

#pragma mark Table Methods

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return [self.sortedKeys count];
}

- (NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section
{
    return [self.sortedKeys objectAtIndex:section];
}

- (NSInteger)tableView:(UITableView *)table
 numberOfRowsInSection:(NSInteger)section {
    NSArray *listData =[self.tableContents objectForKey:
                        [self.sortedKeys objectAtIndex:section]];
    return [listData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";

    NSArray *listData =[self.tableContents objectForKey:
                        [self.sortedKeys objectAtIndex:[indexPath section]]];

    UITableViewCell * cell = [tableView
                              dequeueReusableCellWithIdentifier: SimpleTableIdentifier];

    if (cell == nil){ cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
                                                     reuseIdentifier:@"cellID"] autorelease];
    }

//inseriamo nella cello l'elemento della lista corrispondente
cell.textLabel.text = [listData objectAtIndex:indexPath.row]; 

return cell;
    }


    // Metodo relativo alla selezione di una cella
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        if (indexPath.row == 6){ 
            //l'utente ha cliccato sull'elemeno iPhone, quindi carichiamo la vista relativa
            detail = [[ScuolaUniversitaController alloc] initWithNibName:@"ScuolaUniversita" bundle:[NSBundle mainBundle]];
        }

        //Facciamo visualizzare la vista con i dettagli
        [self.navigationController pushViewController:detail animated:YES]; //rilasciamo il controller 
        [detail release];
        detail = nil;

}

@end

Ответы [ 2 ]

0 голосов
/ 28 февраля 2011

Поскольку 1-я группа может быть нажата только, я полагаю, это связано с тем, как вы создали ячейки таблицы. Попробуйте заменить:


cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
                                                     reuseIdentifier:@"cellID"]

с:


cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                                     reuseIdentifier:@"cellID"]

Второе: я не понимаю, почему вы пытаетесь обнаружить нажатие на строку 6 (которая является 7-й строкой), когда у вас есть 6 строк, определенных для каждого tempArray. Наверняка этот щелчок никогда не будет обнаружен, и поэтому контроллер представления подробностей никогда не будет создан.

0 голосов
/ 28 февраля 2011

if (indexPath.row == 7) не показывает седьмую строку, это показывает 8-ую строку, поэтому возможно, что у вас есть только семь строк, а также тип выбора может быть none.so проверьте это правильно.

Редактировать:

хорошо, вам нужно изменить if(indexPath.row == 7) строку на

 if (indexPath.section == 1 && indexPath.row==0)

фактически то, что здесь происходит, вы делаете 3 раздела с 6 строками, поэтому для седьмого ряда вы можете получить доступ к разделу 1, а затем к строке 0 аналогично для доступа к 13Строка, вам нужно получить доступ к 2-й секции и строки 0.

Теперь я думаю, вы можете понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...