【问题标题】:iPhone SDK - Adding a static image over a UITableViewControlleriPhone SDK - 在 UITableViewController 上添加静态图像
【发布时间】:2012-05-18 13:21:20
【问题描述】:

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

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

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

干杯, 布雷特

【问题讨论】:

    标签: iphone objective-c uitableview


    【解决方案1】:

    使用UIViewControlleridea没有问题。您只需保留 2 个视图控制器:1)UIViewController,其中包含 UIImageView,并子视图 2)UITableViewController 的视图。如有必要,将UITableViewController 设为UIViewController 的强引用。

    我一直都在做类似的事情。

    【讨论】:

    • 这就是诀窍!谢谢!我没想到会那样做,但它就像一个魅力。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        在我的例子中,我添加了一个图像(实际上是带有图像的按钮),当用户触摸图像时,它会消失并显示 tableview。

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

        在下面找到代码

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

        这对我有用。

        【讨论】:

          【解决方案5】:

          根本不要使用 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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多