Представление таблицы в iPhone в сгруппированном стиле - PullRequest
0 голосов
/ 23 февраля 2012

Я хочу заполнить данные из базы данных в табличном представлении в сгруппированном стиле. Количество записей можно варьировать. (Динамически изменить)

Я попробовал это сделать, но я просто могу создавать различные разделы в табличном представлении с заголовком.

для EX: в моей базе данных есть 5 полей ИМЯ, АДРЕС, КОНТАКТ, ЗАПЛАТА, ТЕХНОЛОГИЯ.

Итак, я хочу поместить значение поля имени в заголовок раздела, который я сделал ..... успешно но когда я пытаюсь заполнить остальные четыре значения полей в разделе, он будет заполнен только для 1 раздела.

Вторая проблема заключается в том, что когда я прокручиваю экран вверх и вниз, значения становятся неуместными, что означает случайное изменение их места.

Ответы [ 2 ]

5 голосов
/ 20 марта 2013

Сначала импортируйте делегаты табличного представления в ваш .h файл и убедитесь, что вы придерживаетесь этого формата,

@interface CustomtableViewController : UITableViewController<UITableViewDelegate, UITableViewDataSource>
{
    UITextField * username;
    UIButton * submit;
}

@implementation CustomtableViewController

- (void)viewDidLoad
{
    UIView *newView = [[UIView alloc]initWithFrame:CGRectMake(10, 70, 300, 45)];
    submit = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [submit setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    //[submit setTitleColor:[UIColor colorWithWhite:0.0 alpha:0.56] forState:UIControlStateDisabled];
    [submit setTitle:@"Login" forState:UIControlStateNormal];
    [submit.titleLabel setFont:[UIFont boldSystemFontOfSize:14]];
    [submit setFrame:CGRectMake(10.0, 15.0, 280.0, 44.0)];
    [newView addSubview:submit];

    [self.tableView setTableFooterView:newView];

   [super viewDidLoad];

}

  #pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete method implementation.
    // Return the number of rows in the section.
    return 2;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        //self.tableView.contentOffset = CGPointMake( 10,  320);
        [self.tableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    if ([indexPath section] == 0) {
        username = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)];
        username.adjustsFontSizeToFitWidth = YES;
        username.textColor = [UIColor blackColor];
        if ([indexPath row] == 0) {
            username.placeholder = @"example@gmail.com";
            username.keyboardType = UIKeyboardTypeEmailAddress;
            username.returnKeyType = UIReturnKeyNext;
            cell.textLabel.text = @"Username";
            username.clearButtonMode = YES;
        }
        else {
            username.placeholder = @"minimum 6 characters";
            username.keyboardType = UIKeyboardTypeDefault;
            username.returnKeyType = UIReturnKeyDone;
            username.secureTextEntry = YES;
            cell.textLabel.text = @"Password";
            username.clearButtonMode = UITextFieldViewModeAlways;
        }
        username.backgroundColor = [UIColor whiteColor];
        username.autocorrectionType = UITextAutocorrectionTypeNo; // no auto correction support
        username.autocapitalizationType = UITextAutocapitalizationTypeNone; // no auto capitalization support
        username.textAlignment = NSTextAlignmentLeft;
        username.tag = 0;


        username.clearButtonMode = UITextFieldViewModeAlways; // no clear 'x' button to the right
        [username setEnabled: YES];


    [cell.contentView addSubview: username];

         }

    // Configure the cell...

    return cell;
}

Здесь я создал только два текстовых поля для имени пользователя и пароля. Вы можете использовать условие else if, чтобы вставить любое из текстовых полей в каждую из последовательных строк в соответствии с вашими потребностями.

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    return [NSString stringWithFormat:@"User Login"];
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {

    return 50;
}


- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {

    return @"";

}

Итак, мой код здесь просто используется для создания страницы входа в систему с двумя текстовыми полями (имя пользователя и пароль) и кнопкой входа в систему. Вы можете изменить мой код в соответствии с вашими потребностями. Ура!

0 голосов
/ 23 февраля 2012

Убедитесь, что вы правильно сделали numberOfSectionsInTableView и numberOfRowsInSection. Кроме того, cellForRowAtIndexPath необходимо кодировать, чтобы идентифицировать разделы и строки в каждом разделе. Если вам нужен полный пример, пожалуйста, опубликуйте код, который вы сейчас используете для этого TableView, и я могу изменить его, чтобы сделать то, что вы хотите.

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