将NSMutableArray传递给UITableViewController

时间:2012-04-21 13:11:31

标签: iphone objective-c ios ipad ios5

我有包含NSMutableArray的UIViewController,我想将此数组传递给UITableViewController并在表上查看..我该怎么办?

我的意思是我想(传递)NSMutableArray或任何来自UIViewController的变量到UITableViewController而不是(创建)表

我想将newBooksArray传递给UITableViewController,我在UIViewController中写道:

mytable.gettedBooks = newBooksArray; // gettedBooks is NSMutableArray in UITableViewController

mytable.try = @"Emyyyyy"; // try is a NSString in UITableViewController

并在DidloadView的UITableViewController中编写了

NSLog(@"Try: %@", try); // out is null
NSLog(@"my getted array count: %d", [gettedBooks count]); // out is 0

任何帮助???

3 个答案:

答案 0 :(得分:2)

Creating a UITableView and filling with an array

我专门针对此问题创建了上述教程。

您可以在developer documents

上了解更多方法

首先,您要确保在@interface中有必要的委托电话:

@interface RootViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
    NSMutableArray         * feed;
    UITableView            * tableView;
}

您需要在控制器中使用与以下内容类似的内容:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [feed count];
}

- (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 = [mutableArray objectAtIndex:indexPath.row];
    return cell;
}

numberOfRowsInSection确保您实际从NSMutableArray加载所需数量的单元格行。并且cellForRowAtIndexPath实际上会将NSMutableArray的每一行中的内容加载到UITableView的每一行。

为了将它传递给另一个控制器,你不想要这样的东西吗?

UITableViewController *viewController = [[UITableViewController alloc] initWithNibName:@"TableXIB" bundle:nil];
[viewController setGettedBooks:newBooksArray];
[self.navigationController pushViewController:viewController animated:YES];

答案 1 :(得分:1)

UITableview tutorial and sample code

希望,这会帮助你......享受

答案 2 :(得分:0)

如果您使用的是Tab Bar控制器,则First View控制器是表视图控制器,第二个是UIView控制器。您可以通过跟随代码段将数据传递到Table View控制器。您需要在表视图控制器和set属性中声明名为arrayData(NSMutableArray)的变量(因为我们需要从另一个类访问它。)从这个arrayData,您需要在tableView中加载数据。在View控制器类中编写以下代码。

    NSArray *viewControllers = [self.tabBarController viewControllers];
    MyTableViewController *mTable = [viewControllers objectAtIndex:0];

    [mTable SetArrayData:arrayFromViewController];

    [mTable.tableView reloadData];

如果您使用的是导航控制器,则可以执行

    NSArray *viewControllers = [self.navigationController viewControllers];
    MyTableViewController *mTable = [viewControllers objectAtIndex:0];

    [mTable SetArrayData:arrayFromViewController];

    [mTable.tableView reloadData];

您可以选择使用代表。