2013-07-21 7 views
0

Я пытаюсь добавить новую ячейку в UITableview с помощью IBAction, но когда я нажимаю кнопку добавления на симуляторе, ничего не происходит. После нескольких часов исследований stackoverflow и google я придумал этот код. Я думаю, что он должен работать, но я не могу понять, почему это не так.Как добавить ячейку в uitableview

Пожалуйста, помогите !!!!

Мой .h файл

@interface HomeViewController : UIViewController{ 
NSMutableArray *countries; 
} 


- (IBAction)addFav:(id)sender; 
@property (nonatomic, strong) IBOutlet UITableView *tableView1; 



@end 

и мой файл .m

#import "HomeViewController.h" 


@interface HomeViewController() 

@end 

@implementation HomeViewController{ 

} 
@synthesize tableView1; 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
countries = [NSMutableArray new]; 
} 




- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
return 1;} 



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return [countries count]; 
} 

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

UITableViewCell *cell = [tableView1 dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
} 

cell.textLabel.text = [countries objectAtIndex:indexPath.row]; 
return cell; 
} 


- (IBAction)addFav:(id)sender { 
[tableView1 beginUpdates]; 
[countries addObject:@"Finland"]; 
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:([countries count] - 1) inSection:0]; 
[self.tableView1 insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationRight]; 
[tableView1 endUpdates]; 
[tableView1 reloadData]; 
} 

@end 

Любая помощь будет принята с благодарностью

Thanks

+0

Jst try' countries = [[NSMutableArray alloc] init]; 'in' viewDidLoad'. – HRM

+0

благодарит Ox за быстрый ответ, который остановил приложение от сбоев, но когда я нажал кнопку добавления, ячейка не добавлена , – Shayno

+0

Спасибо HRM, я попробовал это, и приложение не сработает снова, но ячейка не добавится. – Shayno

ответ

1

Если вы только добавление одного элемента в то же время вы можете рассмотреть возможность изменения метода addFav следующим образом:

- (IBAction)addFav:(id)sender { 
    //[tableView1 beginUpdates]; 
    [countries addObject:@"Finland"]; 
    //NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:([countries count] - 1) inSection:0]; 
    //[self.tableView1 insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationRight]; 
    //[tableView1 endUpdates]; 
    [tableView1 reloadData]; 
} 

Кроме того, вы должны регистрировать ваш HomeViewController к UITableViewDelegate/UITableViewDataSource протоколов в файле .h.

Изменения вашей линия:

@interface HomeViewController : UIViewController <UITableViewDelegate,UITableViewDataSource>{ 

Тогда в IB/раскадровке необходимо связать delegate и dataSource выходов вашего tableView1 под инспектором подключений к вашим HomeViewController.

+0

Спасибо yazid, я пробую это сейчас, но он все еще не работает, но он все еще не работает. – Shayno

+0

@Shayno Можете ли вы описать, какие результаты вы получаете от своего приложения? Есть ли уже предварительно загруженные данные? Кроме того, можете ли вы отправить свой метод 'numberOfSectionsInTableView'. Иногда некоторые (даже я) забывают изменить код по умолчанию из 'return 0', чтобы вернуть фактическое количество разделов. – Yazid

+0

Итак, я раньше не вызывал numberOfSectionsInTableView. Я только что обновил свой код с помощью numberOfSectionsInTableView return 1. В моем табличном представлении нет предварительно загруженных данных. Приложение очень простое. Это просто для моего собственного обучения. У меня есть tableView в нижней части viewController и кнопка вверху. Когда я нажимаю кнопку, я хочу добавить ячейку в tableView с названием Finland. В тот момент, когда я нажимаю кнопку, абсолютно ничего не происходит. Я снова обновлю свой вопрос, чтобы показать все изменения, внесенные мной в код. Еще раз спасибо Yazid – Shayno

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