iPhone SDK - 通过UITableViewController添加静态图像

时间:2012-05-18 13:21:20

标签: iphone objective-c uitableview

我正在尝试将静态修复图像添加到UITableViewController,但是当我执行标准[self.view addSubview:imageView];时,图像会放在桌面视图上并随着滚动一起移动。

有没有办法做到这一点,以便图像保持固定? 我知道一种方法是创建UIViewController,然后添加UIImageViewUITableView,但不幸的是,我使用的是自定义UITableViewController(只是在上面找到的库) gihub执行我需要的操作,因此我的控制器必须UITableViewController

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

干杯, 布雷特

5 个答案:

答案 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;

多为我工作。