簡體   English   中英

如何在帶有拆分視圖控制器(iOS5.0)的iPad上使用情節提要?

[英]How to use storyboards on the iPad, with a split-view controller (iOS5.0)?

我找不到合適的示例,當用戶在主視圖中選擇某些內容時,如何在詳細視圖中顯示新視圖?

也沒有找到任何東西。 可行的解決方案是繼續制作每個視圖的故事板(至少是復雜的故事板),並讓appDelegate類包含它們。 實際上,我對故事板ide不允許添加子視圖感到驚訝。如果還沒有,可能在下一次更新中。

Matthijs Hollemans的書“ ios5通過教程”包括如何在ipad上使用情節提要。 但是那本書需要購買,機器人免費。 我只是想找到示例代碼,但失敗了。

您可以按照以下步驟進行操作。

  1. 創建一個新的協議作為代理MyDataDelegate.h。

@protocol MyDataDelegate
- (void)sendDataToView:(MyData *)data;
@end
  1. 在您的DetailViewController.h文件中。


    @interface DetailViewController : UIViewController 

  1. 在您的DetailViewController.m文件中。


    - (void)sendDataToView:(MyData *)data
    {
        // your code how to display data.
    }

使用Xcode 4創建一個主從應用程序項目模板。 轉到情節提要文件,展開主視圖,然后選擇默認的靜態單元格“ Detail”並按Cmd + D,添加另一個靜態單元格。將新的靜態單元格命名為“ Hello”(或您喜歡的任何名稱)。 MasterViewController.m文件,實現此:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self.detailViewController setDetailItem:[[[tableView cellForRowAtIndexPath:indexPath] textLabel] text]];
}

本示例將detailViewController中的默認標簽設置為masterViewController的選定單元格名。 請注意,setDetailItem:方法采用id參數,在本示例中,您要傳遞NSString *。

  1. MasterViewController.h


    @property (assign,nonatomic) id delegate;

  1. MasterViewController.m


    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (delegate!=nil) {
            // get your data here   { your code here } 
            [delegate sendDataToView:data];
        }
    }

  1. 在您的AppDelegate.m文件中。


    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // Override point for customization after application launch.
        UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
        UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
        splitViewController.delegate = (id)navigationController.topViewController;


        // set the view controller here
        UINavigationController *masterNavController = [splitViewController.viewControllers objectAtIndex:0];
        MasterViewController *masterViewController = [masterNavController.viewControllers objectAtIndex:0];
        UINavigationController *detailNavController = [splitViewController.viewControllers objectAtIndex:1];
        DetailViewController *detailViewController = [detailNavController.viewControllers objectAtIndex:0];
        masterViewController.delegate = detailViewController;

        return YES;
    }

暫無
暫無

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

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