Как динамически обновить ваш UITableView при нажатии кнопки? - PullRequest
1 голос
/ 12 февраля 2012

Я застрял с, казалось бы, очень простым приложением, которое пытаюсь разработать

По сути, у меня есть UITable и две кнопки: красная / синяя

Когда кнопканажата, строка с соответствующим названием этой кнопки добавляется в таблицу

enter image description here

Я поражен тем, насколько сложным должен быть реализован UITableView (источник данных, делегат, идентификатор повторяемой формыи т.д.)

Может кто-нибудь помочь мне с этим, желательно показать мне подробные коды

Для моих кнопок у меня есть что-то вроде

- (IBAction)buttonPressed:(UIButton *)sender{
    NSString *item = sender.currentTitle;
    [self.cellArray addObject:item];
    [self.myTable reloadData];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.cellArray.count;
}


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

{
   static NSString *CellIdentifier = @"The Table Cell";

   self.myTableCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   if (self.myTableCell == nil) {
       self.myTableCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
   }
   self.myTableCell.textLabel.text = [self.cellArray objectAtIndex:indexPath.row];
   return self.myTableCell;
}

Ответы [ 3 ]

2 голосов
/ 12 февраля 2012

Так как вы изучаете это ... я опубликую простое решение. Заставить добавить переменную-член NSMutableArray *cellArrays;

инициализируйте его в вашем viewDidLoad

в buttonPressed чек;

if([@"red" isEqualToString:[YourButton titleForState:UIControlStateNormal]])
{
 [self.cellArrays addObject:@"red"];
}
else
{
 [self.cellArrays addObject:@"blue"];
}
[self.YOURTABLEVIEW reloadData];

Теперь в вашем табличном представлении метод источника данных

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.cellArrays.count;
}


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

{
 //in between your code;
 YOURCELL.textlabel.text = [self.cellArrays objectAtIndex : indexpath.row];
}

Попробуйте это ..

0 голосов
/ 26 апреля 2012

Я хотел добавить, что «Еще одна вещь, компилятор показывает предупреждение, в котором говорится, что не может быть многократно используемый идентификатор. Что это такое?» выше ...

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

Ячейка для просмотра таблицы должна иметь идентификатор. В IOS 5 в вашей раскадровке выделите TableViewCell в TableView и введите значение в Identifier. Это должно соответствовать значению в вашем коде создаваемой ячейки.

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

Я бы порекомендовал создать подкласс UITableViewController, затем переопределить методы dataSource и делегата, и вы должны быть в порядке.Переход к UITableView более сложен без каких-либо очевидных преимуществ.

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

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/node/289

Лекции в iTunes U объясняют все дальше.

Наслаждайтесь,

Дэмиен

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