অ্যাপ্লিকেশন কাঠামোর জন্য ডিজাইন যা প্রতিটি প্রয়োগকে ইউআইয়ের কিছু অংশ কাস্টমাইজ করতে দেয়


9

আমার কাছে এমন একটি অ্যাপ্লিকেশন ফ্রেমওয়ার্ক ডিজাইনের কাজ করা হয়েছে যা প্রতিটি প্রয়োগকে ব্যবহারকারীর ইন্টারফেসের কিছু অংশ কাস্টমাইজ করতে দেয়। এরকম একটি উদাহরণ হ'ল বাস্তবায়ন (এখন থেকে একে ক্লায়েন্ট বলুন) নির্দিষ্ট পর্দার জন্য ফিরে আসার জন্য সংগ্রহ ভিউ সেলগুলি সংজ্ঞায়িত করতে পারে। ফ্রেমওয়ার্কটি সহজেই কোনও অ্যাপ তৈরির জন্য উপযুক্ত অবজেক্টগুলি বিক্রির জন্য দায়ী কারণ আমরা বেশ কয়েকটি অনুরূপ নজির তৈরি করব।

ফ্রেমওয়ার্কটিতে আমার বর্তমান পদ্ধতির একটি সমন্বয় নিয়ামক ডিজাইন করা হয়েছে যা অ্যাপ্লিকেশন জুড়ে সমস্ত উপস্থাপনা এবং বরখাস্ত ইভেন্টগুলির জন্য দায়ী। ডিফল্ট সমন্বয় নিয়ামক ফ্রেমওয়ার্কের ভিতরে সমস্ত ডিফল্ট ভিউ কন্ট্রোলারকে বিক্রেত করে যেগুলি প্রয়োজনীয়ভাবে কনফিগার করা UI সরবরাহ না করেই তাদের প্রাসঙ্গিক কাজ সম্পাদন করে। উদাহরণস্বরূপ: একজন নিয়ামক টেমপ্লেট সেল এবং কোনও বিশেষ কিছু সহ একটি সংগ্রহ ভিউ প্রদর্শন করবে। এই নকশার সুবিধাটি হ'ল এটি নিয়ামকদের মধ্যে সংযোগকে সরিয়ে দেয় এবং কোনও ক্লায়েন্টকে ডিফল্ট সমন্বয়কারীকে ওভাররাইড করতে এবং নির্দিষ্ট কাজের জন্য সম্পূর্ণ নতুন দৃশ্য নিয়ামককে ফেরত দেওয়ার অনুমতি দেয়।

আমার যে সমস্যা হচ্ছে তা হ'ল ক্লায়েন্টকে অ্যাপটিতে নিজের কাস্টম ইউআই যুক্ত করার অনুমতি দেওয়ার জন্য আমার কীভাবে এই কাঠামোটি ডিজাইন করা উচিত।

এক

কাঠামোর জন্য একটি ভিউ ফ্যাক্টরি প্রয়োজন এবং এই দর্শন কারখানাকে সমস্ত প্রাসঙ্গিক দৃষ্টিভঙ্গি বিক্রির জন্য দায়বদ্ধ করুন। সুতরাং, অ্যাপ ডেলিগেটে আমরা প্রয়োগ করতে পারি যে ক্লায়েন্ট উদাহরণস্বরূপ একটি কালেকটিভিউসেলফ্যাক্টরি তৈরি করে এবং ইন্টারফেসটি এমন সমস্ত কক্ষগুলি সংজ্ঞায়িত করে যে কোনও মানানসই শ্রেণীর সরবরাহ করতে হবে। আমি এই নকশার সাথে একটি কোড বেস উত্তরাধিকারসূত্রে পেয়েছি এবং এটি থেকে দূরে সরে গেছে কারণ এটি অনেকটা বিমূর্ত এবং কাস্টমাইজযোগ্য। এটি অ্যাপ্লিকেশনটির প্রতিটি দিকের জন্য প্রচুর পরিমাণে কারখানা নিয়ে এসেছিল এবং প্রতিটি অ্যাপ্লিকেশানের সেটআপের সময়টিতে এটি যুক্ত হয়।

অ্যাপ্রোচ টু

প্রতিটি দর্শন নিয়ামক সাবক্লাসিং হুক বা সেটআপ এপিআই নির্দিষ্ট করে যা এই কাস্টম ইউআই ক্লাসগুলিকে রান সময়ে সংজ্ঞায়িত করার অনুমতি দেয় (ইউআইএসপ্লিটভিউ কনট্রোলার কীভাবে কলকারীদের ভিউকন্ট্রোলার সম্পত্তি ব্যবহার করে নিয়ন্ত্রণকারী সেটআপ করতে দেয়) এর অনুরূপ। এটি করার জন্য প্রতিটি ক্লায়েন্ট কেবল বেস সমন্বয় নিয়ন্ত্রক এবং প্রতিটি নিয়ন্ত্রকের উপস্থাপনায় কেবল সাবক্লাস করবে; নিয়ামকের উপর উপযুক্ত মানগুলি সেট করুন যাতে এটি পছন্দসই UI অর্জন করে। কিছুটা এইরকম

viewController.registerReusableCellsBlock = ^(UICollectionView *collectionView){
   //perform custom registration
}

viewController.cellDequeueBlock = ^UICollectionViewCell<SomeProtocol> *(UICollectionView *collectionView,NSIndexPath *indexPath){
   //dequeue custom cells
}

বর্তমানে, আমি পুনঃব্যবহারযোগ্যতা প্রচার করতে এবং ভিউকন্ট্রোলার ব্লাটকে প্রতিরোধ করতে পৃথক বস্তুর মধ্যে দেখার জন্য ডেটা উত্স আলাদা করি। এটি কোষের ইন্টারফেসটি কিছুটা শক্ত কিন্তু অসম্ভব বলে সরবরাহ করতে ভিউ কন্ট্রোলারকে সাবক্লাসিং করে তোলে।

পদ্ধতির ঘ

একটি কাঠামো ডিজাইন করার চেষ্টা এবং এর ব্যবহারের প্রত্যাশা করা সম্ভবত এটির একটি খারাপ ধারণা। সেটআপ ব্যয় তুলনামূলকভাবে বেশি হলেও, সর্বোত্তম বিকল্পটি সর্বাধিক নিয়ন্ত্রণের সাথে সাবক্লাসিংয়ের অনুমতি দেওয়া। তারপরে, একবার আমি এটি বেশ কয়েকটি ক্লায়েন্টের জন্য তৈরি করেছি আমি প্যাটার্নগুলি লক্ষ্য করব যেগুলি উত্থিত হবে এবং পথ ধরে অপ্টিমাইজেশন শুরু করবে।

আমি বুঝতে পারি যে আমি কীভাবে এটি কাঠামোর অভ্যন্তরীণ অনুকূলিতকরণ করতে পারি, যার সাথে আমি লড়াই করছি তা হ'ল ক্লায়েন্ট দ্বারা ফ্রেমওয়ার্কের সম্ভাব্য কাস্টমাইজেশন পয়েন্টগুলি সংজ্ঞায়িত এমন ইন্টারফেসকে কীভাবে সেরাভাবে সংজ্ঞা দেওয়া যায়।

টি এল; ডিআর

ইন্টারফেসের সবচেয়ে জটিল অংশটি কালেকশন ভিউ সেলগুলিতে নেস্টেড কালেকশন ভিউ নিয়ে কাজ করে। এটি অনুভূমিক পেজিং এবং কোষগুলির উল্লম্ব স্ক্রোলিংয়ের অনুমতি দেয়। অনুভূমিক কোষ পরিচালনা করে এমন একটি ডেটা উত্স থাকার মাধ্যমে এটি অর্জন করা হয় এবং প্রতিটি কোষের সংগ্রহ ভিউকে একটি নতুন ডেটা উত্স দিয়ে কনফিগার করে।

কীভাবে একটি এমন ইন্টারফেস ডিজাইন করবে যা এই সমস্ত কক্ষকে কাস্টমাইজ করার অনুমতি দেয়?


পন্থা 1 সর্বাধিক নমনীয়তা দেয়, কমপক্ষে 2 এ যোগাযোগ করে তবে আপনার ব্যবহারকারীদের কাছ থেকে সর্বনিম্ন প্রচেষ্টা প্রয়োজন। তাহলে তুমি কি চাও?
ট্রেলারিয়ান

@ ট্রিলারিয়ন সত্যই আমি প্রবীণ অভিজ্ঞতার আশা করছি। আমার সবচেয়ে বড় উদ্বেগ কাস্টমাইজেশন সম্পর্কে আমার ঠিক কতটা নিয়ন্ত্রণের দরকার তা অনুমান করতে সক্ষম হচ্ছি না
ড্যানিয়েল জি

4
আপনি কাস্টমাইজেশন পূর্বাভাস করতে পারবেন না। সাধারণ উদ্দেশ্য ফ্রেমওয়ার্কগুলি সংজ্ঞায়িত করা কঠিন। সর্বোপরি আপনি এমন কিছু সাধারণ কোড সরবরাহ করতে পারেন যা অন্য বিকাশকারীদের কোনওভাবেই সীমাবদ্ধ করে না। আমি উত্তরাধিকার প্রয়োজন এমন সমাধানগুলি এড়াতে এবং অন্যান্য উপায়ে বাড়ানো যেতে পারে এমন উপাদানগুলিতে ফোকাস করব। আপনার নিজের অবদান যথাসম্ভব সহজ রাখুন।
ফ্রাঙ্ক হিলেমান

উত্তর:


1

এটি পুরানো তবে উপযুক্ত প্রশ্ন যা এর উপযুক্ত উত্তর কখনই পাইনি, যা আমার অভিজ্ঞতাতে সাড়া ফেলেছে

How would one design an interface that allows all these cells to be customizable?

is- এটা করবেন না।

ক্লায়েন্ট কাস্টমাইজেশন করতে পারে এমন পছন্দগুলি সীমাবদ্ধ করা- ইউআই বা অন্য কোনও ক্ষেত্রে- বিক্রেতার পক্ষে প্রায় সবসময়ই ভাল - কারণ এটি সমাধানটি সহজ করে এবং সমর্থন বোঝা হ্রাস করে - এবং ক্লায়েন্টের জন্যও - কারণ তারা তখন সবচেয়ে বেশি সক্ষম সমাধানের জায়গার মিষ্টি স্পটে পৌঁছানোর জন্য বিক্রেতার দক্ষতাটি উপার্জন করুন, চাকাটি পুনরায় উদ্ভাবন না করে নিজের সময় নষ্ট করুন।

তাদের যদি অন্য কোনও সমাধানের প্রয়োজন হয় তবে তারা আপনাকে বলবে। যদি তারা কাস্টমাইজেশনের উপর জোর দেয় তবে তাদের একটি আলাদা সমাধান প্রয়োজন এবং কেবল এটি এখনও জানেন না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.