代码之家  ›  专栏  ›  技术社区  ›  aahrens

在UIViewController上显示自定义UIView

  •  0
  • aahrens  · 技术社区  · 13 年前

    我正在寻找实现以下功能的最佳方法的意见。我有一个UIViewController,它有一个分组格式的UITableView。每个TableViewCell都包含一个NSString。当用户在我的didSelectRowForIndexPath方法中点击一个单元格时,弹出一个带有单个文本字段的UIView,该UIView在所选的给定单元格中预先填充了NSString。显示UIVIew的原因是我希望它大约是280 x 380帧,并且仍然可以看到一些UITableView。

    目标是它的行为就像一个ModalViewController,除了iPhone。有没有人对如何实现这个行为或者是否有更好的实现有什么建议?

    3 回复  |  直到 13 年前
        1
  •  1
  •   jakecard    13 年前

    预先创建UIView(其中包含UITextField),并将其隐藏:

    // Of course, these instance variable names are made up, and should be changed
    self.myModalView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 280, 380)] autorelease];
    [self.view addSubview:self.myModalView]
    
    self.myTextField = [[[UITextField alloc] init] autorelease];
    [self.myModalView addSubview:self.myTextField];
    
    self.myModalView.hidden = YES;
    

    然后,当用户选择一行时,填充文本字段并显示模式视图:

    - (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath {
      // Replace stringAtIndexPath with however your data source accesses the string
      NSString* myString = [self stringAtIndexPath:indexPath];
      self.myTextField.text = myString;
      self.myModalView.hidden = NO;
    }
    

    如果你想看上,你可以在显示模态视图之前做一些转换。

        2
  •  0
  •   Hwansoo Kim    13 年前

    我认为您可以在UITableView中使用“addSubView”。直接将ModalView添加到UITableView。它会起作用的。

        3
  •  0
  •   AechoLiu    13 年前

    使用一些动画来实现这个效果。当UIView出现时,它将提升UITableView,就像一些键盘行为一样。因此,必须在self.view上添加子视图并修改UITableView的框架。而且,UITableView应该是self.view的子视图,如果self.view与UITableView相同,则您没有用于添加此UIView的self.view。