在 UIViewController 之上显示自定义 UIView

发布于 2024-10-04 03:03:01 字数 330 浏览 7 评论 0原文

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

目标是它的行为类似于 ModalViewController(iPhone 除外)。有谁对如何实现这种行为有任何建议或者是否有更好的实现?

I'm looking for opinions on the best way to implement the following functionality. I have a UIViewController with a UITableView in Grouped Format. Each TableViewCell contains an NSString. When the User taps on a cell I'd like to in my didSelectRowForIndexPath method popup a UIView with a single textfield, that's prepopulated with the NSString in the given cell that was selected. The reason for displaying the UIVIew is I want it to be about 280 x 380 frame and still see some of the UITableView.

The goal being that it behaves like a ModalViewController except for the iPhone. Does anyone have any suggestions on how to implement this behavior or if there is a better implementation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

他不在意 2024-10-11 03:03:01

预先创建 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;
}

如果您想变得更奇特,您可以在显示之前执行一些 CATransition 操作模态视图。

Create the UIView (with the UITextField inside) beforehand, and make it hidden:

// 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;

Then, when the user selects a row, populate the text field and show the modal view:

- (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;
}

If you want to get fancy, you can do some CATransition stuff before showing the modal view.

甜宝宝 2024-10-11 03:03:01

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

I think you can use "addSubView" in UITableView. Add the ModalView to your UITableView directly. It will work.

中二柚 2024-10-11 03:03:01

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

Use some animation to implement this effect. When the UIView appears, it will lift the UITableView, like some keyboard behavior. So, you have to addSubView on the self.view and modify the UITableView's frame. And, the UITableView should be a child view of self.view, if self.view is the same as the UITableView, then you has no self.view for adding this UIView.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文