UIViewController, UIView и иерархия View в разработке ios4 SDK / iphone - PullRequest
0 голосов
/ 03 ноября 2010

Может ли кто-нибудь объяснить иерархию представлений в разработке для iphone / ipad?

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

Я также хотел бы знать, как я могу заполнить подкласс UITableViewController без использования NIB.

Минимальные компоненты:

Window
    UiViewController  
          UIView
              UITextBox

или

Window  
   UIView
      UITextBox

@ Ричард Дж. Росс III

Куда мне положить myTableView ??

Window  
   myTableView  

Какой тип myTableView?

Ответы [ 2 ]

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

Первое предположение верно. UIViewController управляет свойством представления, которое является UIView. Контроллер отвечает за заботу о вещах, когда происходят определенные события. Если пользователь поворачивает свое устройство, viewController - это объект, который слышит об этом. Если вы запрограммировали это событие, viewController передаст команду UIView для поворота. В viewController есть специальный код, который может решить, что делать, когда представление появляется, исчезает, загружается, выгружается и т. Д.

UITableViewController управляет табличным представлением. В настройке XCode по умолчанию источник данных и делегат табличного представления являются подклассом UITableViewController. Делегат управляет тем, что происходит, когда пользователь взаимодействует с таблицей, выбирая строки, прокручивая и т. Д. Источник данных содержит информацию, которая заполняет строки таблицы, верхние и нижние колонтитулы.

Если вы хотите отобразить текстовое поле в tableViewCell, вам понадобится объект UITableView и UITextField. Вы должны заставить dataSource присвоить таблице UITextField в виде строки и добавить ее в представление UITableViewCell, которое называется contentView.

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

Минимальные компоненты таковы, но рекомендуется использовать UIViewController, так как это позволяет делать некоторые интересные вещи с UITableViews, UITabBars и т. Д. Подкласс UITableViewController без пера:

#import <UIKit/UIKit.h>

@interface MyController : UITableViewController
// custom methods here
@end

@implementation MyController

–(UITableViewCell *) tableView:(UITableView *) view cellForRowAtIndexPath:(NSIndexPath *) indexPath
{
    return [[[UITableViewCell alloc] init] autorelease];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // initializes the table with 10 rows
    return 10;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSLog(@"the user selected row: %@", indexPath);
}

@end

Затем, чтобы использовать этот пользовательский контроллер:

MyController *control = [[MyController alloc] initWithStyle:UITableViewStylePlain];
// now hook it up!
myTableView.dataSource = control;
myTableView.delegate = control;
[control release];

Извините за мои синтаксические ошибки, я написал это без IDE (например, прямо на stackoverflow).

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