1

ビューコントローラにボタンがあり、ボタンをテーブルビューコントローラに接続したい(ボタンをクリックすると、テーブルが読み込まれて表示されることを意味します)

しかし、どうすればよいかわかりません(ボタンを別のView Controllerに接続できますが、テーブルには接続できません)。これが私のコードです

よろしくお願いします!(私は本当に初心者です)

FirstViewController.h

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController

@end

FirstViewController.m

#import "FirstViewController.h"

@interface FirstViewController ()

@end

@implementation FirstViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
    return YES;
}
}

@end

CreateViewController.h//私のテーブル

 #import <UIKit/UIKit.h>

 @interface CreateViewController : UIViewController <
 UITableViewDataSource, UITableViewDelegate>
 {
 NSArray *tableData;

 }

 @property (nonatomic, retain) NSArray *tableData;
 @end

CreateViewController.m

#import "CreateViewController.h"

@implementation CreateViewController
@synthesize tableData;


#pragma mark - View lifecycle

- (void)viewDidLoad
{
tableData = [[NSArray alloc] initWithObjects:@"Johan", @"Paul",@"George",@"Ringo", nil];
[super viewDidLoad];
// Do any additional setup after loading the view.
}

#pragma mark - TableView Data Source methods

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

}


 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = nil;

cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];
if(cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyCell"];

}
cell.textLabel.text = [tableData objectAtIndex:indexPath.row];

return cell;
}


 @end

編集:ストーリーボードを使用しました

4

5 に答える 5

2

ボタンはFirstViewControllerにあると思います。それが実装されている場合は、-(IBAction)clickButtonを実装し、コードを記述して、Interface Builder(Interface Builderを使用している場合)の下部に接続します。createViewControllerオブジェクトを書き込み#import <CreateViewController.h>、FirstViewController.hに

FirstViewController.hでは、

#import "CreateViewController.h"

@interface FirstViewController : UIViewController{

    CreateViewController *createViewController;
}
-(IBAction)clickButton:(id)sender;
@end

FirstViewController.mでは、以下のメソッドを追加するだけです

 -(IBAction)clickButton:(id)sender{

if (!createViewController) {
                createViewController = [[CreateViewController alloc] initWithNibName:@"CreateViewController" bundle:nil];

            }

            UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
            self.navigationItem.backBarButtonItem = backBarButtonItem;
            [backBarButtonItem release];
            [self.navigationController pushViewController:createViewController animated:YES];
}

およびAppDelegate.hでは、

#import "FirstViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) FirstViewController *viewController;
@property (nonatomic, retain) UINavigationController *navControl;
@end

AppDelegate.mでは、

@synthesize window;
@synthesize viewController;
@synthesize navControl;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
    navControl = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window addSubview:[navControl view]];
    [self.window makeKeyAndVisible];
    return YES;
}
于 2012-04-24T11:42:01.513 に答える
1

FirstViewController.h

    #import <UIKit/UIKit.h>

    @interface FirstViewController : UIViewController
   <UITableViewDataSource,UITableViewDelegate>
          {
             UITableView *maintableView;
             NSArray *tableData;


          }  

        @property (nonatomic,retain)IBOutlet UITableView *maintableView;
          -(IBAction)click;

       @end

          FirstViewController.m

              #import "FirstViewController.h"

              @implementation FirstViewController
              @synthesise maintableView;
                - (void)viewDidLoad
                    {

                    [maintableView setHidden : YES];
                    [super viewDidLoad];

                   }

               - (void)viewDidUnload
                     {
                       [super viewDidUnload];

                     }

         - (BOOL)shouldAutorotateToInterfaceOrientation:     (UIInterfaceOrientation)interfaceOrientation
                  {
            if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
                     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
                      } 
     else 
     {
          return YES;
          }
  -(IBAction)click
     {
          [maintableView setHidden : NO];
       tableData = [[NSArray alloc] initWithObjects:@"Johan", @"Paul",@"George",@"Ringo", nil];
       }

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

       }


       - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        {
            UITableViewCell *cell = nil;

           cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];
        if(cell == nil)
          {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyCell"];

         }
       cell.textLabel.text = [tableData objectAtIndex:indexPath.row];

       return cell;
   }

    }
    @end
于 2012-04-24T13:01:54.373 に答える
0

最初のビューで、btn1 という名前のボタンを 1 つ作成します。

シミュレータ画面の上部に設定します。

次に、オブジェクト ライブラリから tableview を取得します。ボタンの下に置いて……

ロード時にテーブルを非表示にします....

書き込み [テーブル名 sethidden: YES]

さて、ボタンのアクションメソッドで、[tablename sethdden : NO]

tableData = [[NSArray alloc] initWithObjects:@"Johan", @"Paul",@"George",@"Ringo", nil];

次に、テーブルに必要なすべてのメソッドを記述します。

次の 3 つの方法が必要です。

  1. -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

  2. -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath

  3. -(void)tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

これを試してください....何かクエリが発生した場合はお知らせください

于 2012-04-24T12:03:46.337 に答える
0

UITableView のコードを viewDidLoad() メソッドに入れないでください。

1つのボタンを作成し、ロード時に表示します...ボタンのアクションメソッドでテーブルを表示し、データをロードします...

あなたが私に尋ねることができないなら....私はあなたを助けるのが大好きです.

于 2012-04-24T11:12:56.283 に答える
0

あなたが言ったように、ストーリーボード:

最初にiphoneストーリーボードを通過し、ビューを作成してからボタンを追加します

その後

  • テーブル ビューをドラッグ アンド ドロップします
  • モジュールを使用してボタンをテーブルビューに接続します-テーブルをクリックし、メニューから-->エディター-->埋め込み-->を選択し、ナビゲーションコントローラーを追加します

このプロセスを使用すると、コードを記述せずに GUI デモを簡単に作成できます。次に、TableViewController ファイルを作成してコードを追加する必要があります。

忘れないでください --> GUI 部分とコードが完成したら、カスタム クラスのオブジェクトを介して createViewController クラスを GUI に追加する必要があります。

お役に立てれば!

于 2012-04-24T23:22:17.933 に答える