تحميل وحدة تحكم العرض وعرض التسلسل الهرمي برمجيًا في Cocoa Touch بدون XIB
-
03-07-2019 - |
سؤال
يبدو أن جميع قوالب اللمس الكاكاو يتم إعدادها لتحميل NIB.
إذا كنت أرغب في بدء مشروع جديد يستخدم وحدة تحكم العرض ، وتحميل عرضه (التسلسل الهرمي) بشكل برمجي ، وليس من NIB/XIB ، ما هي الخطوات اللازمة لإعداد ذلك أو ضبط قالب.
على الرغم من أن كل ما كان علي فعله هو تطبيق ToildView ، لكن لدي مشكلة في كل مرة أحاول القيام بذلك.
المحلول
من السهل للغاية القيام بتوليد واجهة مستخدم برمجية تمامًا. أولاً ، تحتاج إلى تحرير main.m لتبدو مثل ما يلي:
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
UIApplicationMain(argc, argv, nil, @"MyAppDelegate");
[pool release];
return 0;
}
حيث MyAppDelegate هو اسم فئة مندوب التطبيق الخاص بك. هذا يعني أنه سيتم إنشاء مثيل MyAppDelegate عند الإطلاق ، وهو أمر يتم التعامل معه عادةً بواسطة ملف NIB الرئيسي للتطبيق.
ضمن myappdelegate ، قم بتنفيذ ApplicationDidFinishLaunching: طريقة مماثلة لما يلي:
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if (!window)
{
[self release];
return;
}
window.backgroundColor = [UIColor whiteColor];
rootController = [[MyRootViewController alloc] init];
[window addSubview:rootController.view];
[window makeKeyAndVisible];
[window layoutSubviews];
}
حيث MyRootViewController هو وحدة التحكم في العرض للعرض الأساسي في نافذتك. يجب أن يهيئة النافذة الرئيسية ، وإضافة العرض الذي تديره MyRootViewController إليه. يتم الاحتفاظ بجذر RootController كمتغير مثيل داخل المندوب ، للرجوع إليه لاحقًا.
يجب أن يتيح لك هذا إنشاء واجهة المستخدم برمجيًا من خلال MyRootViewController.
نصائح أخرى
Uiviews أنفسهم ليس لديهم تسلسل هرمي ، uinavigationcontrollers يفعلون. لذا ابتسم أحد هؤلاء ، وينزلق على uiviewController على مكدسها. هذا يجب أن يفعل ذلك ، بأكثر طريقة ممكنة ، مع عدم وجود ملفات XIB على الإطلاق. يجب أن تكون قادرًا على البناء على هذا.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
UINavigationController *navController = [[UINavigationController alloc] init];
UIViewController *viewController = [[UIViewController alloc] init];
// set the properties of viewController here, to make it look like you want
[navController pushViewController:viewController animated:NO];
[window addSubview:navController.view];
// Don't forget memory management
[navController release];
[viewController release];
[window makeKeyAndVisible];
}