У меня есть приложение, построенное в Xcode с использованием Objective-C, которое сохраняет данные на Parse.com. Пользователь отправляет воспоминания в базу данных parse.com.Отобразить количество строк (массив?) Из Parse в UIView UIViewController
Я пытаюсь отобразить количество (количество) воспоминаний, отправленных текущим пользователем.
Раскадровка Я хочу, чтобы это отображалось на UIViewController, и есть много места для одной строки текста внизу страницы. Итак, я вставил табличный вид из библиотеки объектов Xcode, а затем вставил ячейку просмотра таблицы с 1 прототипом Cell с идентификатором повторного использования «cellCount».
Я настроил ViewController как делегат и DataSource для UITableView, и я связал ячейку с файлом заголовка ViewController.
Я сейчас полностью застрял, и мне просто нужна помощь. Сегодня я проработал около 12 часов, поэтому, пожалуйста, пожалейте меня. Посмотрите, есть ли в моем коде некоторые очевидные ошибки. БЛАГОДАРЯ!!!
импорт "MemoriesViewController.h"
MemoriesViewController.h
#import <UIKit/UIKit.h>
#import <Parse/Parse.h>
#import "AppDelegate.h"
@interface MemoriesViewController : UIViewController <UITableViewDelegate, UITextViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@property (nonatomic, strong) PFQuery *query;
@property (nonatomic, strong) NSArray *mainArray;
@property (strong, nonatomic) IBOutlet UITableViewCell *cellCount;
@property (strong, nonatomic) IBOutlet UITextView *memoriesField;
- (IBAction)sendMemories:(UIButton *)sender;
- (IBAction)logOut:(id)sender;
@end
MemoriesViewController.m
#import "MemoriesViewController.h"
@interface MemoriesViewController()
@end
@implementation MemoriesViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self.navigationController.navigationBar setHidden:NO];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
NSLog(@"Current user: %@", currentUser.username);
}
else {
[self performSegueWithIdentifier:@"showLogin" sender:self];
}
self.memoriesField.delegate = self;
_mainArray = [[NSArray alloc] initWithObjects:@"one", nil];
}
#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfSectionsInTableView:(NSInteger)section {
return [_mainArray count];
}
- (UITableViewCell *)tableView:(UITableViewCell *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
PFQuery *query = [PFQuery queryWithClassName:@"Memories"];
[query whereKey:@"senderName" equalTo:[[PFUser currentUser] username]];
[query countObjectsInBackgroundWithBlock:^(int count, NSError *error) {
if (!error)
NSLog (@"You have %d Memories Saved", count);
return cell;
}
#pragma mark - IB Actions
- (IBAction)sendMemories:(UIButton *)sender {
PFObject *memories = [PFObject objectWithClassName:@"Memories"];
memories[@"Memories"] = self.memoriesField.text;
[memories setObject:[[PFUser currentUser] username] forKey:@"senderName"];
[memories saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded){
NSLog(@"succeeded");
self.memoriesField.text = nil;
}
else{
NSLog(@"problem");
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Our Apologies" message:@"Your Memory was not Recieved" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"Ok"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction: defaultAction];
}
NSString *memories = [self.memoriesField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[self.view endEditing:YES];
if ([memories length] == 0)
{
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"Memory Recieved!" message:@"" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"Ok"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction: defaultAction];
[self presentViewController:alert animated:YES completion:nil];
}
else {
[self.navigationController popToRootViewControllerAnimated:YES];
}
}];
}
- (IBAction)logOut:(id)sender {
[PFUser logOut];
[self performSegueWithIdentifier:@"showLogin" sender:self];
}
#pragma mark - UITextField Delegate Methods
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}
@end
Ошибка - Нет видимых @interface для «UITableViewCell» объявляет селектор «dequeueReusableCellWithIdentifier:» –
У меня есть ощущение, что у меня есть вещи в неположенном месте , Я не уверен, что ViewDidLoad и ViewWillAppear упорядочены правильно или что у них есть правильные сегменты кода внутри них. –
Почему вы используете табличное представление для отображения единственного значения? Почему не UILabel, например? https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILabel_Class/ – fishinear