какой тип приложения позволит мне создать пользовательское табличное представление с поддержкой навигации - PullRequest
0 голосов
/ 09 ноября 2010

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

я пробовал навигационное приложениено это не позволяет перемещать табличное представление в контроллере корневого представления ...

1 Ответ

1 голос
/ 09 ноября 2010

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

Поскольку вы говорите, что вам нужна навигация (push, всплывающие контроллеры, с кнопкой возврата на панели навигации), вам следует начать с шаблона приложения на основе навигации. Это создаст приложение, в котором root-view-controller основан на UITableViewController.

Теперь для кнопок, которые вы хотите над UITableView. Вот где у вас есть несколько вариантов:

1) Поместите кнопку (кнопки) в панель навигации. Легко добавить одну кнопку в правую часть панели навигации:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle: @"My Button" style: UIBarButtonItemStyleBordered target: self action: @selector( onMyButton: )] autorelease];
}

Немного сложнее добавить более одной кнопки, но это можно сделать.

2) поместите кнопки в заголовок UITableView. В кончике вашего root-view-controller создайте новый вид (размером примерно 320x100) и добавьте свои кнопки. Присоедините его к IBOutlet UIView * в вашем RootViewController, который называется что-то вроде "_buttonContainer", объявленный так:

@interface RootViewController : UITableViewController 
{
    IBOutlet UIView*    _buttonContainer;
}

Затем в viewDidLoad заставьте этот buttonContainer просмотреть заголовок вашей таблицы:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.tableHeaderView = _buttonContainer;
}

Это поместит ваши кнопки над строками tableView, но кнопки будут прокручиваться при прокрутке таблицы. Не забудьте также подключить свои кнопки.

3) Это вариант, который, я думаю, вы пытались реализовать, а именно - сдвиг всего табличного представления вниз и размещение кнопок над ним. Для этого не используйте UITableViewController в качестве основы для вашего rootViewController. UITableView - это вид контроллера, и он предназначен для заполнения экрана / окна (внутри любых других контейнерных контроллеров представления ...). Вместо этого добавьте в проект новый класс на основе UIViewController (обязательно выберите «С XIB для пользовательского интерфейса» и снимите флажок «Подкласс UITableViewController»). В конструкторе интерфейса перетащите свои кнопки на представление, а также перетащите новый UITableView на представление - и расположите все так, как вы хотите. Подключите источник данных tableview и делегируйте объект контроллера представления (который является объектом «Владелец файлов»).

Теперь в определении класса необходимо объявить, что ваш новый ViewController является делегатом табличного представления и источником данных:

@interface MyNewRootViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {

}

@end

И вам необходимо добавить минимальный набор методов источника данных для поддержки просмотра таблицы:

@implementation MyNewRootViewController

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return 0;
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

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

    // Configure the cell...

    return cell;
}

Подключите свои кнопки, и это все ... Вы можете обновить MainWindow.xib, чтобы использовать ваш новый rootviewcontroller вместо старого.

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