0

这是我的情况。我有一个带有按钮的 ViewController 类 A,该按钮通过执行以下操作转到 TableViewController 类 B。

- (void) goToClassB
{
    ViewControllerB *viewController =
    [[ViewControllerB alloc] initWithStyle:UITableViewStylePlain];
    // Present view controller modally.
    if ([self
        respondsToSelector:@selector(presentViewController:animated:completion:)]) {
        [self presentViewController:viewController animated:YES completion:nil];
    } else {
        [self presentModalViewController:viewController animated:YES];
    }
}

我希望能够拥有一个 A 类和 B 类都可以访问和编辑的数组。我该如何实现呢?

4

6 回答 6

1

在 B 类中创建一个数组变量,例如:

@interface classB:NSObject
{
  NSMutableArray *arrayFromA;
}
@property (nonatomic, assign)  NSMutableArray *arrayFromA;

综合变量。

并在此方法中传递数组,如:

- (void) goToClassB
{
   ViewControllerB *viewController = [[ViewControllerB alloc] initWithStyle:UITableViewStylePlain];
   [viewController setArrayFromA:yourArray];
   // Present view controller modally.
   if ([self
     respondsToSelector:@selector(presentViewController:animated:completion:)])
    {
     [self presentViewController:viewController animated:YES completion:nil];
    }
    else
    {
      [self presentModalViewController:viewController animated:YES];
    }
}
于 2012-11-06T08:14:52.427 回答
0

在 ViewControllerA 中创建一个 NSMutableArray,并在分配后将其传递给 ViewControllerB。

于 2012-11-06T08:12:03.583 回答
0

这可以实现创建 NSMutableArray 并在其中一个类中分配属性

@property(nonatomic,assign) NSMutableArray *array;
于 2012-11-06T08:19:53.577 回答
0

正如其他人指出的那样,最简单的方法是通过设置属性将数组简单地传递给 B,但另一种选择是让 B 对 A 具有弱反向引用。因此,您始终使用相同的数组。如果 A 和 B 同时更改数组,这可能很有用。

@interface ViewControllerA : UIViewController
@property (nonatomic, strong)  NSArray *array;
@end 

@interface ViewControllerB : UIViewController
@property (nonatomic, weak)  ViewControllerA *viewControllerA;
@end 

/* When you're creating the ViewControllerB, do this: */
...
viewController.viewControllerA = self;
...

/* Use the array (From ViewControllerB) */

- (void)doSomethingWithTheArray
{
    self.viewControllerA.array = ...
}
于 2012-11-06T08:22:41.260 回答
0

我提到您希望两者都进行编辑。您可以使用应用程序委托来共享应用程序级别的变量。检查此链接

一些代码在这里。在您的应用委托类中。

@interface YourDelegateClass:UIResponder
{
  NSMutableArray *array;
}
@property (nonatomic, assign)  NSMutableArray *array;

您可以使用此代码从应用程序类的任何位置访问该数组

YourDelegateClass * delegate =[[UIApplication shareApplication]delegate];
yourclassa.array = delegate.array;
or yourclassb.array = delegate.array;

注意:你必须在课堂上或你的代表上分配* delegate.array *。

于 2012-11-06T08:23:24.343 回答
0

在 view1 设置属性中创建 NSMutable 数组

@property(nonatomic,assign) NSMutableArray *array;

在 viewB 中创建相同的数组并设置属性和

@property (nonatomic, assign)  NSMutableArray *arrayB;

@Synthesize

Now at the time call viewB set value of array of viewA to viewB like this

ViewControllerB *viewController = [[ViewControllerB alloc] initWithStyle:UITableViewStylePlain];
[viewController arrayB:array];
于 2012-11-06T08:27:26.470 回答