视图控制器上的表视图控制器

Posted

技术标签:

【中文标题】视图控制器上的表视图控制器【英文标题】:Table view controller on view controller 【发布时间】:2011-05-10 05:22:47 【问题描述】:

我正在创建一个应用程序,我想在其中显示一个文本框,当我在其中输入一个单词时,它将显示字典中与该单词匹配的内容。现在我想显示列表将根据在文本框中输入的单词在表格视图中从我的字典中生成,并且该表格视图应该在我拥有文本框的同一个视图控制器上。是否可以这样做。我的意思是可以创建一个带有滚动选项的表格视图,以便用户可以滚动列表,然后选择他想要的单词。

【问题讨论】:

【参考方案1】:

是的,这是可能的。将 IBOutlet 用于 UITableView 并将其连接起来。定义其数据源并委托给您的控制器。将 UITableViewDelegate 实现到您的控制器并覆盖所有方法,如 cellForRowAtIndex 等。

//FilterDataViewController.h
#import <UIKit/UIKit.h>
@interface FilterDataViewController : UIViewController <UITableViewDelegate>

    IBOutlet UITableView *tblView;
    IBOutlet UITextField *txtFld;

    NSMutableArray *arrSrch;
    NSMutableArray *srchedData;

-(IBAction)srchBtnTapped:(id)sender;
@end

//FilterDataViewController.m
#import "FilterDataViewController.h"
@implementation FilterDataViewController

-(IBAction)srchBtnTapped:(id)sender

    if(![txtFld.text isEqualToString:@""])
    
        [srchedData removeAllObjects];
        for (NSString *allStrings in arrSrch)
        
            NSComparisonResult result = [allStrings compare:txtFld.text options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [txtFld.text length])];
            if (result == NSOrderedSame)
            
                [srchedData addObject:allStrings];
            
        
        [tblView reloadData];
    


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad 
    [super viewDidLoad];

    arrSrch = [[NSMutableArray alloc] initWithObjects:@"One",@"One Two",@"Two",@"Three",@"Four",@"One Five",@"Six",nil];
    srchedData = [[NSMutableArray alloc] init];


#pragma mark -
#pragma mark Table view data source

// Customize the number of sections in the table view.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
    return 1;



// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    return [srchedData count];



// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    

    cell.textLabel.text = [srchedData objectAtIndex:indexPath.row];
    // Configure the cell.

    return cell;


@end

【讨论】:

@Christina 你可以关注chris-software.com/index.php/tag/uitableview。不过,如果您需要任何进一步的帮助,请发表评论,我会为您准备演示并发布。 你太好了,我真的需要帮助,请给我一个演示,让我有一个表格视图,然后在它下面有一个文本框,然后硬编码一些值并将它们显示在表格视图和这个应用程序适用于 iPAD。如果你有时间,请给我这个....? @Christina 抱歉耽搁了。我已经编辑了答案并粘贴了代码。您只需要在 XIB 上使用 UITableView、UIButton、UITextField 并将 UITableView 和 UITextField 与 IBOutlet 连接。在 UIButton 的事件内连接修饰。它将按您的要求工作。唯一的问题是,在您的情况下,我在这里使用了 NSMutableArray,您需要为字典实现与您在问题中所说的相同的逻辑。再次为延误道歉。【参考方案2】:

这当然是可能的。创建一个基于视图的应用程序并将您的表格视图和文本字段放在同一个视图中,您可以做任何您打算做的事情。

【讨论】:

默认会得到滚动条。 如果你有相关的东西或任何链接,如果你知道的话,你能给我提供任何示例代码吗... 这个太复杂了,我其实是个新手,要花很多时间去理解那个

以上是关于视图控制器上的表视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

2 在一个视图控制器中使用 Swift 3 的表视图

如何从嵌入在视图控制器中的表视图中的集合视图中传递数据并推送新的视图控制器?

如何退出导航控制器?

带有类的情节提要中的表视图控制器

使用 Core Data 的 View Controller 中的表视图

从导航控制器内的表视图控制器中的按钮展开