UIViewController与IB有关的问题

时间:2011-06-22 20:02:27

标签: iphone objective-c cocoa-touch uiviewcontroller interface-builder

这就是我的工作

  1. 使用UIViewController子类
  2. 设置视图
  3. 转到IB,然后将视图拉入iphone
  4. 在UIView上方拉出导航栏
  5. 在下面的空白处拉一张桌面视图。
  6. 运行界面构建器时,一切都很顺利。

    但这些事情都行不通。

    1. 如果我在导航栏顶部添加一个按钮,则会出现按钮,但不会调用IBAction。按钮似乎位于导航栏(其他地方)下方的某个级别

    2. 如果我为tableView添加页脚视图,则不会显示。我相信UIView再次掩盖它或其他......

      - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section                
      
      {
      
      UIView *viewForFooter = [[UIView alloc] init ];
      UIButton *footerButton = [[UIButton alloc] initWithFrame:CGRectMake(200, 40, 100, 40)];
      footerButton.titleLabel.text = @"Forgot Login";
      //self.forgotLogin = footerButton;
      [viewForFooter addSubview:footerButton];    
       return viewForFooter;
      
      
      }
      
    3. 为什么?

1 个答案:

答案 0 :(得分:0)

1)没有反应点击:尝试在代码中添加操作。如果它有效,连接IBAction就出了问题。

[self.barButton setTarget:self];
[self.barButton setAction:@selector(IBActionHandler:)];

作为备份,您还可以尝试在代码中添加按钮:

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] 
    initWithBarButtonSystemItem:UIBarButtonSystemItemDone 
                         target:self
                       selector:@selector(IBActionHandler:)];
self.navigationItem.rightBarButtonItem = barButton;
[barButton release];

2)隐形按钮 - 我认为您的按钮是自定义UIButton,因此它是透明的。标题不可见,因为您必须将其设置为:

[footerButton setTitle:@"Forgot Login" forState:UIControlStateNormal];

如果你想要一个普通的圆角按钮,你必须在>之后设置框架。

UIButton *footerButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
// Careful, this button is autoreleased.
[footerButton setFrame:CGRectMake(200, 40, 100, 40)];
顺便说一下,你的CGRects可能也有问题。也许应该使用框架正确初始化footerView,您可能必须实现

 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section

PS:使用标准的UITableViewController实际上可能是个好主意。 快乐的编码!