只需按一下按钮,即可从UIView切换到UITableview

时间:2012-07-08 10:45:35

标签: iphone ios cocoa-touch

我创建了一个按钮并将其连接到界面构建器中的操作。在从显示视图切换到显示表视图的操作方法中,我需要做什么?

以下是我的一些代码:

//  SwitchToTableViewController.h

#import <UIKit/UIKit.h>

@interface SwitchToTableViewController : UIViewController {


}

-(IBAction) switch : (id) sender;

@end

//SwitchToTableViewController.m
#import "SwitchToTableViewController.h"
#import "Table.h"
@implementation SwitchToTableViewController

-(IBAction) switch : (id) sender{

    // what is i need to write here to switch to tableview


}

@end

//table.m
#import <UIKit/UIKit.h>


@interface Table : UITableViewController {


}

@end

//table.h
#import "Table.h"


@implementation Table

#pragma mark Table view methods

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 2;
}


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

    // Set up the cell...

    return cell;
}

@end

3 个答案:

答案 0 :(得分:0)

你需要:

  1. 创建表格的瞬间。

  2. 将所有数据传递到此瞬间,很可能是一个数组,以便您可以使用它来显示单元格数据。您需要先在Table类中创建一些iVars。目前你还没有。

  3. 选择其中一种方式展示你的桌面即时。

  4. 查看Apple的 doc。它有很多示例代码。

    编辑示例代码:

    SwitchToTableViewController.h文件中,添加以下行:

    #import "Table.h"
    

    SwitchToTableViewController.m中,进行此更改

    -(IBAction) switch : (id) sender{
    
        // what is i need to write here to switch to tableview
        Table *myTable = [[Table alloc]init];
        myTable.cellArray = [NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3", nil];  //only an example to be displayed
        [self presentViewController:myTable animated:YES completion:nil];  // present your Table - view controller
    
    }
    

    您的Table.h文件应如下所示:

    #import <UIKit/UIKit.h>
    
    @interface Table : UITableViewController {
    
    }
    @property (nonatomic, strong) NSArray *cellArray;  // adding this line to get data from the parent
    @end
    

    Table.m中,进行此更改

    @implementation Table
    
    @synthesize cellArray;  //add this line right after @implementation Table
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        // Return the number of sections.
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
    
        // Return the number of rows in the section.
        return cellArray.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
        // Configure the cell...
        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
            cell.textLabel.text = [cellArray objectAtIndex:indexPath.row];
        }
    
        return cell;
    }
    

答案 1 :(得分:0)

这里有两个视图控制器,而不是两个视图。实现这两个概念之间的区别非常重要。我在下面的答案中大胆地提到了你需要阅读的其他一些关键词。

要显示另一个视图控制器以响应按下按钮之类的操作,您需要创建目标视图控制器的新实例,然后以某种方式在屏幕上显示它。

有很多方法可以做到这一点,但对于初学者来说,最简单的方法是在故事板中完成所有这些操作。将两个视图控制器添加到故事板。

您的初始视图控制器(带按钮)应嵌入 UINavigationController 控制 - 拖动从按钮到表视图控制器。这将创建一个 segue 。从选项列表中选择“推送”。

嘿,当您按下按钮时,您的表格视图现在将显示在屏幕上。

答案 2 :(得分:0)

首先创建一个SingleView应用程序(基于UIViewController),将其命名为SwitchingView。

然后在视图上方添加UITableView。使用Interface构建器连接。将tableview的委托和数据源设置为SwitchingView。

还在视图上添加一个按钮(在添加表视图之前)。使用IB(界面构建器)隐藏设置表视图。

按钮操作

      tableview.hidden = NO;

这将显示您的表视图!!!如果您想再次显示视图,只需制作

即可
      tableview.hidden = YES;
tableView中的

:didSelectForIndexPathRow方法。