2013-10-01 2 views
-2

У меня есть фреймворк, который создает некоторые представления, приложение, которое использует фреймворк, вызывает из него метод и передает его в текущем контроллере представления, тогда фреймворк затем вызывает presentModalViewController для отображения представления.ios7 пустой экран из фреймворка

Он отлично работал с iOS 6.1 SDK, но когда я обновился до Xcode 5 и iOS 7 SDK, я больше не вижу модального вида, вместо этого все, что я получаю, это пустой экран.

EDIT

Heres некоторые код:

рамочная называется "testityi"

testityi.m

#import "TestViewController.h" 

@implementation testitiy 

- (NSString*) sayHi : (NSString*) name { 
    return [NSString stringWithFormat:@"Hello %@", name]; 
} 

- (void) displayView:(UIViewController *)parentController { 
    TestViewController* controller = [[TestViewController alloc] init]; 
    [parentController presentViewController:controller animated:YES completion:nil]; 
} 

TestViewController просто вид с ярлыком, который говорит «Вид из каркаса»

Сам фреймворк отлично работает, вызывая метод sayHi работает отлично.

приложения третьей стороны имеет вид с этикеткой и кнопкой, которая вызывает метод SayHi, а затем метод DisplayView, Херес код вида контроллера:

MainViewController.m

- (IBAction)buttonPressed:(id)sender { 
    testitiy* framework = [[testitiy alloc] init]; 
    NSString* msg = [NSString stringWithFormat:@"Calling sayHi method on framework...\n  result: %@", [framework sayHi:@"John"]]; 
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"sayHi method call"  message:msg delegate:self cancelButtonTitle:@"Ok, show me the view" otherButtonTitles:nil, nil]; 
    [alert show]; 
} 

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if(buttonIndex == [alertView cancelButtonIndex]) { 
     testitiy* framework = [[testitiy alloc] init]; 
     [framework displayView:self]; 
    } 
} 

Оповещения действия кнопки также работает правильно, я добавил NSLog раньше и его работу.

После нажатия кнопки предупреждения отображается представление, но вместо того, чтобы содержать метку «Вид из фреймворка», я получаю пустой экран.

Вы можете увидеть код на Github

EDIT 2

Я получил его ... Я не звал initWithBundle на ViewController из рамок, я добавил метод пользовательского инициализации что вызывает:

рамки: TestViewController.m

+ (NSBundle *)frameworkBundle { 
    static NSBundle* frameworkBundle = nil; 
    static dispatch_once_t predicate; 
    dispatch_once(&predicate, ^{ 
     NSString* mainBundlePath = [[NSBundle mainBundle] resourcePath]; 
     NSString* frameworkBundlePath = [mainBundlePath  stringByAppendingPathComponent:@"testity.bundle"]; 
     frameworkBundle = [NSBundle bundleWithPath:frameworkBundlePath]; 
    }); 
    return frameworkBundle; 
} 

- (id) initWithFramework { 
    NSBundle* bundle = [[self class] frameworkBundle]; 
    self = [super initWithNibName:@"TestViewController" bundle: bundle]; 
    return self; 
} 

И измененная testitiy.m

- (void) displayView:(UIViewController *)parentController { 
    TestViewController* controller = [[TestViewController alloc] initWithFramework]; 
    [parentController presentViewController:controller animated:YES completion:nil]; 
    //[parentController.navigationController pushViewController:controller animated:YES]; 
} 

И теперь его работы ...

Я надеюсь, что это помогает кто-то еще, но я предполагаю, что это была глупая ошибка моя. Извините за все проблемы и спасибо за ваше время!

+0

без какого-либо кода это сложно сказать. –

+0

'presentModalViewController:' устарел. Посмотрите, работает ли соответствующий 'presentViewController: анимированный: завершение:'. – Kevin

+1

Вбежал в собрание и сказал: «ой, ай, извините ... но что-то вроде как будто перестало работать» .... B ответил: «вы должны найти кого-нибудь, чтобы это исправить!» – Till

ответ

1

Так через некоторое время я, наконец, понять проблему:

При использовании пользовательской базы, все ресурсы, такие как изображения и СИБ файлы должны быть вручную включен в приложении третьей стороны, так что он имеет доступ к этим файлам ,

Моя проблема заключалась в том, что я включал ресурсы (хранящиеся в комплекте) в стороннее приложение, но инфраструктура пыталась отобразить представление на основе собственных ресурсов, к которым приложение не могло получить доступ, для этого Причина, по которой я получал пустой экран.

Мне просто нужно было сказать фреймворку, чтобы использовать входящий пакет в стороннем приложении для отображения этого представления (с использованием метода initWithNibName: Bundle).

См. EDIT 2 в вопросе, чтобы увидеть код, который решил мою проблему.

Надеюсь, это поможет кому-то. :-)

+0

Как создать xibs и изображения в комплекте? любые ссылки? –

+0

ok получил это ... спасибо u –

Смежные вопросы