ios4 SDK / iphone开发中的UIViewController,UIView和View层次结构

时间:2010-11-03 12:29:29

标签: iphone objective-c ios4

有人可以在iphone / ipad开发中推广视图层次结构吗?

我想知道在屏幕上显示textBox所需的“root”元素是什么。

我也想知道如何在不使用NIB的情况下填充UITableViewController子类。

最小组件是:

Window
    UiViewController  
          UIView
              UITextBox

Window  
   UIView
      UITextBox

@ Richard J. Ross III

我在哪里放myTableView?

Window  
   myTableView  

myTableView是什么类型的?

2 个答案:

答案 0 :(得分:1)

最小的组件是,但建议使用UIViewController,因为它允许你用UITableViewsUITabBars等做一些很酷的东西.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上)。

答案 1 :(得分:1)

第一个猜测是正确的。 UIViewController管理一个视图属性,它是一个UIView。当某些事件发生时,控制器负责处理事情。如果用户旋转了他的设备,则viewController是听到它的对象。如果您已为此事件编码,则viewController将向UIView传递指令以进行旋转。 viewController中有一些特殊代码可以决定在视图出现,消失,加载,卸载等时要执行的操作。

UITableViewController管理一个tableView。在默认的XCode设置中,Table View DataSource和Delegate是UITableViewController子类。委托管理用户与表交互时发生的情况,选择行,滚动等。数据源包含填充表,页眉和页脚中行的信息。

如果要在tableViewCell中显示文本框,则需要UITableView对象和UITextField。您必须使dataSource为表提供UITextField作为行,并将其添加到UITableViewCell的视图中,该视图称为contentView。