我正在尝试将静态修复图像添加到UITableViewController
,但是当我执行标准[self.view addSubview:imageView];
时,图像会放在桌面视图上并随着滚动一起移动。
有没有办法做到这一点,以便图像保持固定?
我知道一种方法是创建UIViewController
,然后添加UIImageView
和UITableView
,但不幸的是,我使用的是自定义UITableViewController
(只是在上面找到的库) gihub
执行我需要的操作,因此我的控制器必须为UITableViewController
。
有没有办法做到这一点?我已经在这一段时间没有运气了。
干杯, 布雷特
答案 0 :(得分:2)
使用UIViewController
想法没有问题。您只需保留2个视图控制器:1)UIViewController
,其中包含UIImageView
,并且子视图2 UITableViewController
的视图。如有必要,请将UITableViewController
强引用UIViewController
。
我一直都做过类似的事情。
答案 1 :(得分:0)
根本不要使用UITableViewController(我从不使用它,因为我听说几乎所有开发人员都使用它)。当你想用它来定制设计时,这是一场噩梦。
创建自己的UIViewController子类(MYTableViewController),添加UITableView * tableView实例@property并@synthetize it:
@interface MYTableViewController : UIViewController <UITableViewDelegate,UITableViewDataSource> {
UITableView *tableView;
}
@property (nonatomic, retain) IBOutlet UITableView *tableView;
@end
然后在实现中将它添加到视图中(使用XIB或viewDidLoad方法):
@implementation MYTableViewController
@synthesize tableView;
// If not XIB used:
-(void)viewDidLoad{
[super viewDidLoad];
CGRect frame = self.view.bounds;
self.tableView = [[[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain] autorelease];
tableView.dataSource = self;
tableView.delegate = self;
[self.view addSubview:tableView];
// And here you van add your image:
[self.view addSubview:imageView];
}
// Do not forget to release it and clear delegate and datasourcce when view uloads:
#pragma mark - Memory management:
-(void)dealloc{
self.tableView.delegate = nil;
self.tableView.dataSource = nil;
self.tableView = nil;
[super dealloc];
}
- (void)didReceiveMemoryWarning {
self.tableView.delegate = nil;
self.tableView.dataSource = nil;
self.tableView = nil;
[super didReceiveMemoryWarning];
}
-(void)viewDidUnload{
self.tableView.delegate = nil;
self.tableView.dataSource = nil;
self.tableView = nil;
[super viewDidUnload];
}
@end
答案 2 :(得分:0)
是的,方法很少。您可以通过编程方式创建视图层次结构
viewDidLoad
或使用NIB文件。确保正确链接代理和视图属性。
如果通过initWithNibName:bundle:方法(由超类UIViewController声明)指定了nib文件,UITableViewController将加载在nib文件中存档的表视图。否则,它会创建一个具有正确尺寸和自动调整大小掩码的未配置UITableView对象。您可以通过tableView属性访问此视图。 如果加载了包含表视图的nib文件,则数据源和委托将成为nib文件中定义的那些对象(如果有)。如果没有指定nib文件或者nib文件没有定义数据源或委托,UITableViewController会将数据源和表视图的委托设置为self。
答案 3 :(得分:0)
正如https://stackoverflow.com/a/6961973/127493所说,UITableViewControllers可以被简单的UIViewControllers取代。
事实上,诀窍是向你添加一个UITableView UIViewController,使它成为委托等...,然后将它添加到你的UIViewController.view。
因此,您可以在控制器主视图中添加一些“姐妹”视图。
答案 4 :(得分:0)
在我的情况下,我正在添加一个图像(实际上是带有图像的按钮),当用户触摸图像时,它将消失并显示tableview。
所以我先禁用滚动然后再启用它
找到下面的代码
// in viewDidLoad
[self.view addSubview:imgview];
tbl.scrollEnabled = NO;
// in -(IBAction)btnClicked:(id)sender
[imgview removeFromSuperview];
tbl.scrollEnabled = YES;
多为我工作。