这就是我尝试过的。屏幕上没有任何内容,并且没有任何您应该实现的UITableView方法被调用。
-(void)loadView
{
UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view = view;
[view release];
}
- (void)viewDidLoad
{
[super viewDidLoad];
UITableViewController *TVC = [[[UITableViewController alloc]
initWithStyle:UITableViewStylePlain] autorelease];
CGRect cgRct = CGRectMake(0, 10, 320, 100);
UIView *newView = [[UIView alloc] initWithFrame:cgRct];
TVC.view = newView;
[newView release];
[self.view addSubview:TVC.view];
}
我已经找到了以编程方式执行此操作的好示例和教程,但没有。
我想要实现的是一个表格,它会占用我的屏幕。也许3/4的屏幕会很好。
非常感谢 代码
答案 0 :(得分:8)
问题是你正在创建一个UITableViewController,它是一个UIViewController,并且期望在导航堆栈上。你想要做的是创建一个UITableView,这是一个UIView。您也没有设置表的委托和数据源,您需要这样做以获得回溯。
你的viewDidLoad看起来应该是这样的
- (void)viewDidLoad
{
[super viewDidLoad];
UITableView *table = [[[UITableView alloc] initWithStyle:UITableViewStylePlain] autorelease];
table.dataSource = self;
table.delegate = self;
table.frame = CGRectMake(0, 10, 320, 100);
[self.view addSubview:table];
}
(注意,如果您需要访问回调之外的表,则应将其保存在ivar中而不是在本地声明,并保留它。如果您需要更多行,请告诉我。代码,告诉你我的意思)
答案 1 :(得分:1)
确保使用
设置TVC
的委托
TVC.delegate = self;
这就是为什么没有这些方法被调用的原因。另外,通过将接口声明更改为
,确保您的类实现UITableViewDelegate
协议
@interface YourViewController : UIViewController <UITableViewDelegate> {
//declare variables here
}
同样重要的是,不要设置TVC.view
,因为初始化视图控制器时已经发生这种情况。您只是将其设置为空白视图,这就是您没有看到任何内容的原因。
答案 2 :(得分:1)
iOS7似乎喜欢这种初始化tableview的方式:
//make tableview
UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(0, 81, 200, 200) style:UITableViewStylePlain];
table.dataSource = self;
table.delegate = self;
[self.dataView addSubview:table];
尝试一下。希望它可以帮到某人。
答案 3 :(得分:0)
UIView *newView = [[UIView alloc] initWithFrame:cgRct];
TVC.view = newView;
我会给你一个提示。在这里,您将UITableViewController的视图设置为EMPTY VIEW ...