1

我正在尝试将静态固定图像添加到 a UITableViewController,但是当我执行标准时[self.view addSubview:imageView];,图像被放置在 tableview 上并随着滚动而移动。

有什么办法可以使图像保持固定吗?我知道一种方法是创建 a UIViewController,然后添加UIImageView和 a UITableView,但不幸的是,我使用的是自定义UITableViewController(只是在上面找到的一个库gihub来做我需要的事情),所以我的控制器必须是 a UITableViewController

有没有办法做到这一点?我已经有一段时间没有运气了。

干杯,布雷特

4

5 回答 5

2

UIViewController使用idea没有问题。您只需保留 2 个视图控制器: 1) UIViewController,它具有UIImageView内部,并子视图 2) 的视图UITableViewController。如有必要,请UITableViewControllerUIViewController.

我一直在做类似的事情。

于 2012-05-18T13:31:30.760 回答
0

根本不要使用 UITableViewController(我从不使用它,而且我听说几乎所有开发人员都在使用它)。当您想用它定制设计时,这是一场噩梦。

创建自己的 UIViewController 子类(MYTableViewController),添加 UITableView *tableView 实例@property 和@synthetize:

@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
于 2012-05-18T13:25:59.830 回答
0

是的,有几种方法。您可以在 viewDidLoad或使用 NIB 文件以编程方式创建视图层次结构。确保正确链接代理和视图属性。

如果通过 initWithNibName:bundle: 方法(由超类 UIViewController 声明)指定 nib 文件,UITableViewController 会加载归档在 nib 文件中的表视图。否则,它会创建一个未配置的 UITableView 对象,具有正确的尺寸和自动调整大小的掩码。您可以通过 tableView 属性访问此视图。如果加载了包含表视图的 nib 文件,则数据源和委托将成为 nib 文件中定义的那些对象(如果有)。如果没有指定 nib 文件,或者 nib 文件没有定义数据源或委托,UITableViewController 将数据源和表视图的委托设置为 self。

于 2012-05-18T13:35:15.347 回答
0

正如https://stackoverflow.com/a/6961973/127493所说,UITableViewControllers 可以替换为简单的 UIViewControllers。

事实上,诀窍是向您的 UIViewController 添加一个 UITableView,使其委托等等......,并将其添加到您的 UIViewController.view。

因此,您将能够向控制器主视图添加一些“姐妹”视图。

于 2012-05-18T13:35:58.373 回答
0

就我而言,我正在添加一个图像(实际上是带有图像的按钮),当用户触摸图像时,它会消失并显示表格视图。

所以我先禁用滚动然后再启用它

在下面找到代码

// in viewDidLoad
[self.view addSubview:imgview];
tbl.scrollEnabled = NO;

// in -(IBAction)btnClicked:(id)sender
[imgview removeFromSuperview];
tbl.scrollEnabled = YES;

那对我有用。

于 2012-05-18T13:36:07.890 回答