Как установить содержимое табличного представления в Xcode 4.2? - PullRequest
0 голосов
/ 01 апреля 2012

Я новичок в разработке для iOS, но не в программировании.

Я пытаюсь создать простое приложение. Я открыл Xcode 4.2 и создал новое приложение главного вида. Что я хочу сделать, это установить содержимое табличного представления на главной странице.

Я отредактировал заголовочный файл моего контроллера следующим образом:

#import <UIKit/UIKit.h>

@interface MyAppMasterViewController : UITableViewController

{
    NSArray *tableViewArray;
}

@property (nonatomic, retain) NSArray *tableViewArray;

@end

Я синтезировал переменную tableViewArray в реализации контроллера:

#import "MyAppMasterViewController.h"

@implementation MyAppMasterViewController

@synthesize tableViewArray;

И я загрузил в него isntance NSArray в методе viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSArray *array = [[NSArray alloc] initWithObjects:@"Apple", @"Microsoft", @"HTC", nil];
    self.tableViewArray = array;
}

Как теперь я могу назначить этот массив (tableViewArray) для табличного представления?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2012

Как теперь я могу назначить этот массив (tableViewArray) для представления таблицы?

Вы не 'назначаете' массив таблице, вы используете магию сделегаты.Соответствуйте UITableViewDataSource и UITableViewDelegate в вашем .h следующим образом:

@interface MyAppMasterViewController : UITableViewController <UITableViewDelegate,UITableViewDataSource>

Назначьте ваш класс в качестве делегата (наиболее вероятно в -viewDidLoad) для таблицы: thenваше табличное представление запросит у вас все важные методы -cellForRowAtIndexPath, в которых вы устанавливаете заголовок ячейки примерно так:

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [_documentTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = [array objectAtIndex:indexPath.row];
    return ( cell );

}
1 голос
/ 01 апреля 2012

Ты не.Табличное представление запрашивает ячейки, которые идут в табличном представлении одна за другой, когда они необходимы.Табличное представление также спрашивает, сколько ячеек существует и сколько секций, и множество других вещей о том, как оно ведет себя.

Как табличное представление узнает, из какого экземпляра запрашивать эту информацию?У него есть свойство под названием делегат.Вы устанавливаете делегата в вашем табличном представлении для своего экземпляра viewController, а затем выбираете для реализации, какие методы вам нужны из протокола UITableViewDatasource в вашем экземпляре контроллера представления.

Узнайте больше о делегировании и свойствах в Objective-C

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