簡體   English   中英

使用情節提要

[英]using storyboards

我正在嘗試使用ray故事板的教程。 我正在使用一個選項卡欄控制器連接一個嵌入了導航控制器的表視圖,該表視圖被命名為播放器,一個視圖控制器將選項卡欄控制器連接為手勢。 通過將這些詳細信息存儲在對象中,在玩家表格視圖中顯示玩家的游戲,姓名和等級。 所以我用基礎對象創建了一個新的文件播放器,將它們存儲為屬性,現在我必須將這些屬性存儲在稱為播放器視圖控制器的視圖控制器數組中,然后我必須在App中制作該數組和一些測試播放器對象委托,然后使用實例變量將其分配給PlayersViewController的玩家屬性。因此在AppDelegate.m中,我導入了玩家和玩家視圖controller.h標頭,並添加了一個名為_players的新實例變量。 所以我在應用程序委托.m中的代碼如下所示,錯誤是下標要求接口'NSARRAY'的大小,該大小在行viewcontrollers [0]的非脆弱ABI中不是恆定的。

#import "AppDelegate.h"
#import "Player view controller.h"
#import "player.h"

@implementation AppDelegate {
   NSMutableArray *_players; }

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   _players=[NSMutableArray arrayWithCapacity:20];
   player *player1=[[player alloc]init];
   player1.name=@"name";
   player1.game=@"cricket";
   player1.rating=3;
   [_players addObject:player1];
   player1=[[player alloc]init];
   player1.name=@"name";
   player1.game=@"football";
   player1.rating=3.5;
   [_players addObject:player1];
   player1=[[player alloc]init];
   player1.name=@"tony";
   player1.game=@"handball";
   player1.rating=4;
   [_players addObject:player1];
   UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
   UINavigationController *navigationController = [tabBarController viewControllers][0];
   UINavigationController *navigationController = [tabBarController viewControllers][0]; /*at this point i get a error as  [error: subscript requires size of interface 'NS ARRAY' which is not constant in non-fragile ABI] */
   Player view controller *playersViewController = [navigationController viewControllers][0];  
   playersViewController.players = _players;

   return YES;

使用下someArray[0] (即someArray[0] )需要iOS 6 SDK中引入的Objective-C功能,但是afaik Xcode 4.2僅支持iOS 5,因此您要么必須使用舊語法:

UINavigationController *navigationController = [[tabBarController viewControllers] objectAtIndex:0];
//alternatively:
UINavigationController *navigationController = [[tabBarController viewControllers] firstObject];

...或更新到最新版本的Xcode(據我所知,您甚至無法使用Xcode 4.2提交到App Store)。

如果您只是想獲取數組的第一個對象,為什么不使用firstObject?

UINavigationController *navigationController = [[tabBarController viewControllers] firstObject];

您可以使用以下代碼

UINavigationController *navigationController = 
    [tabBarController.viewControllers objectAtIndex:0];

有關錯誤和說明,請參閱以下鏈接。

什么是非脆弱ABI?

下標需要接口'NSArray'的大小,在不穩定的ABI中,該大小不是恆定的

希望它可以幫助您...!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM