আমি কীভাবে আইওএস-এ ভিউ হায়ারার্কি পরীক্ষা করব?


170

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

আমি ইন্সট্রুমেন্টগুলির দিকে নজর রেখেছি UI recorder, তবে এটি কেবল ইউআই ক্রিয়াকলাপগুলি রেকর্ড করে এবং খেলায় `এবং কোনও ক্ষেত্রে কেবল ম্যাক অ্যাপ্লিকেশনের জন্যই কাজ করে।

এর চেয়ে ভাল সমাধান কি আছে?

উত্তর:


168

এক্সকোড-এ এখন রেভিল অ্যাপ এবং স্পার্ক ইন্সপেক্টর এর মতো 3 ডি ভিউ হায়ারার্কি পরিদর্শন নির্মিত হয়েছে।

এখানে চিত্র বর্ণনা লিখুন

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

এখানে চিত্র বর্ণনা লিখুন

অ্যাপলের ডকুমেন্টেশনে আরও তথ্য ।


5
যদি ভিউ ডিবাগিং বিকল্পটি উপলভ্য না থাকে তবে স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / ২৪৪০০৩২২ / দেখুন দেখুন ।
কেনেটিএম

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

আপনি একবার এই সরঞ্জামের উপর নির্ভর করা শুরু করলে এটি সর্বদা ক্রপ হয়ে যায়। কেন বা কীভাবে এটি ঠিক করা যায় তা আমি জানি না তবে এটি আরও জটিল দৃষ্টিতে ঘটেছিল বলে মনে হয়।
Departamento বি

263

আমি জানি না কোনও জিইউআই ভিউ পরিদর্শন সরঞ্জাম আছে কিনা, তবে ইউআইভিউতে ডিবাগিং পদ্ধতিতে আমার কিছুটা ভাগ্য হয়েছিল: -recursiveDescription

আপনি যদি ডিবাগারটিতে প্রোগ্রামটি বিরতি দেন এবং এটিকে জিডিবিতে ইনপুট করেন (সম্পাদনা করুন: এলএলডিবিতেও কাজ করে)

পো [[ইউআই উইন্ডো কী উইন্ডো] পুনরাবৃত্তির বিবরণ]

আপনি আপনার সম্পূর্ণ দর্শন শ্রেণিবিন্যাসের একটি মুদ্রণ পান। আপনি এই ভিউয়ের ভিউ হায়ারার্কির একটি মুদ্রণ পেতে একটি নির্দিষ্ট ভিউতেও এটি কল করতে পারেন।

আপনি যে তথ্যটি থেকে বেরিয়ে আসছেন তা চালিয়ে নেওয়া কিছুটা ক্লান্তিকর হতে পারে তবে এটি আমার পক্ষে কার্যকর প্রমাণিত হয়েছে।

ক্রেডিট এই ব্লগ পোস্টে যায় যা এই পদ্ধতির বিষয়ে কথা বলে এবং এই সহায়কটির সাথে লিঙ্কযুক্ত , তবে অ্যাপলের প্রযুক্তিগত নোটটি খুঁজে পাওয়া শক্ত


1
আমি পেয়েছি: ত্রুটি: '__ __ lldb_objc_class' এর কোনও ধারণার জন্য ইন্টারফেসের ঘোষণা খুঁজে পাচ্ছেন না? (lldb) পো [[UIWindow কী উইন্ডো] পুনরাবৃত্তির বিবরণ] ত্রুটি: '$ __ lldb_objc_class' ত্রুটির জন্য ইন্টারফেস ঘোষণার সন্ধান করতে পারে না: '$ __ lldb_objc_class' ত্রুটির জন্য ইন্টারফেস ঘোষণার সন্ধান করতে পারে না: 2 ত্রুটি পার্সিং এক্সপ্রেশন
জেনিচিমারো

1
আমি বিশ্বাস করি যে এই উত্তরটি এখন আর ক্যানোনিকাল উত্তর নেই, কারণ এখন জিইআইআই সরঞ্জামগুলি উপলব্ধ রয়েছে যা সরাসরি এই প্রশ্নের উত্তর দেয় যে 'একটি জিইআইআই সরঞ্জাম আছে ...?'
থের্যাভেন

এক্সকোড 5.1 দিয়ে শুরু করে আমি যখনই পুনরাবৃত্তির বিবরণ ত্রুটি টাইপ করি তখনই এই ত্রুটিটি পাওয়া শুরু করি: উদাহরণ পদ্ধতি 'UndoManager' এর বিভিন্ন অনুবাদ ইউনিটে অসামঞ্জস্যিত ফলাফল রয়েছে ('আইডি' বনাম 'এনএসইন্ডো ম্যানেজার *') দ্রষ্টব্য: উদাহরণ পদ্ধতি 'আন্ডোম্যানেজার' এখানেও ত্রুটি ঘোষণা করেছে : 1 টি ত্রুটিগুলি
পার্সিংয়ের

1
প্রশ্নটি পুরানো এবং গ্রাফিকাল পদ্ধতি সম্পর্কে জিজ্ঞাসা করার সময়, এই নির্দিষ্ট উত্তরটি পাঠ্যগত সমাধানগুলির সাথে সম্পর্কিত to ক্যানোনিকাল ইন-কোড সমাধানের একটি আলোচনা যেমন এখানে পাওয়া যাবে: stackoverflow.com/a/14193682/2431627 । যেমন কেভিসির মাধ্যমে _প্রিন্টহায়ারচি সম্পত্তি ব্যবহার করে।
রবিন মাচার্গ

46

অ্যাপ্লিকেশন স্ক্রিনশট প্রকাশ করুন

অদ্ভুতভাবে যথেষ্ট, এখন অন্য বিকল্প আছে, http://revealapp.com/ , যা এই পোস্ট হিসাবে একটি খোলা (ফ্রি) বিটাতে রয়েছে। আপনি দেখতে পাচ্ছেন এটি অন্য ভিজ্যুয়াল ইন্সপেক্টর।

সম্পাদনা 2014-04-05: প্রকাশ বিটা ছাড়িয়ে গেছে এবং আর বিনামূল্যে নেই। তবে, 30 দিনের বিচার রয়েছে।


1
আমি এর জন্য কয়েকটি সরঞ্জাম চেষ্টা করেছি (স্পার্ক ইন্সপেক্টর, আইওএস হায়ারার্কি ভিউয়ার এবং ফ্রাঙ্ক পরীক্ষার সরঞ্জামে ফায়ারব্যাগের মতো দৃশ্য)। এখনও পর্যন্ত প্রকাশ আমার প্রিয়।
স্টিউ

1
তবে মোটামুটি এখনও এটি মূল্যবান। দেখার জন্য এক্সকোড সরঞ্জামগুলিতে তৈরির চেয়ে আরও ভাল উপায়
উইল লারচে

35

এই প্রশ্নটি পুরানো তবে আমি যে নতুন সরঞ্জামটি বিকাশ করছি সে সম্পর্কে এখানে তথ্য রাখি: https://github.com/glock45/iOS- হাইয়ারচি- ভিউয়ার এখানে চিত্র বর্ণনা লিখুন


আমি যখন সিমুলেটারের অন্য ভিউতে নেভিগেট করি তখন পৃষ্ঠাটি স্বয়ংক্রিয়ভাবে রিফ্রেশ করা সম্ভব? তদুপরি, এই দর্শকের মধ্যে মানগুলি পরিবর্তন করা সম্ভব (তাই আমি প্রকৃত কোড না লিখে ব্রাউজারে কিছু পরীক্ষা করতে পারি)? ধন্যবাদ :)
ব্রায়ান

1
ব্রায়ানকে ধন্যবাদ আমি মান পরিবর্তন করার সম্ভাবনা প্রোটোটাইপ করতে শুরু করেছি। এটি অফিসিয়াল রিলিজে বন্ধ রয়েছে। সাথে থাকুন !
দামিয়ান কোয়াকোভস্কি

পরামর্শের জন্য অনেক ধন্যবাদ। আমি এই সরঞ্জামটির সাহায্যে আমার সমস্যা সমাধান করতে পেরেছি, এটি এমন একটি সমস্যা যা এক্সকোডের ইউআই ডিবাগার ব্যবহার করে সমাধান করতে পারেনি!
D6mi

ধন্যবাদ, দামিয়ান, তবে এটি পড়ার লোকদের জন্য, এই সরঞ্জামটি অযৌক্তিক বলে মনে হচ্ছে।
ভাদাদাদি কার্টিক



6

নিখরচায়: কেবল এটি পরিদর্শক টাইপ করুন:

po [[UIWindow keyWindow] recursiveDescription]

বাণিজ্যিক: http://revealapp.com/ আমি রিভালাপের বিটা সংস্করণ পরীক্ষা করেছি, বাগ থাকলেও ভাল ছিল। আর একটি বাণিজ্যিক সরঞ্জাম: http://sparkinspector.com/ এটি নির্বিঘ্নে কাজ করে।


স্পার্ক ইন্সপেক্টরটির একটি দুর্দান্ত বিজ্ঞপ্তি রয়েছে
থাইরিব

6

সুইফট 4।

আইওএস :

extension UIView {

   // Prints results of internal Apple API method `recursiveDescription` to console.
   public func dump() {
      Swift.print(perform(Selector(("recursiveDescription"))))
   }
}

ম্যাকোস :

extension NSView {

   // Prints results of internal Apple API method `_subtreeDescription` to console.
   public func dump() {
      Swift.print(perform(Selector(("_subtreeDescription"))))
   }
}

ব্যবহার (ডিবাগারে): po myView.dump()


2

এটি সমস্ত ডিবাগ উইন্ডোতে ফেলে দেয় ((পাঠ করা কঠিন) :( আইওএস 10, এক্সকোড 8.3.3 এ কাজ করা

po UIApplication.shared.keyWindow?.recursiveDescription()

0

অনুমোদিত উত্তরটি আর এক্সকোড 8 এবং সুইফট 2.3 ব্যবহার করে আমার পক্ষে কাজ করে না । আমার জন্য কী কাজ করে তা এখানে:

po UIApplication.sharedApplication().keyWindow?.recursiveDescription()


1
ধন্যবাদ, এমপিএফ, তবে এটি সুইফট 3-এ কাজ করে না: ত্রুটি: 'ইউআইএপ্লিকেশন' টাইপের বস্তুতে সম্পত্তি 'ভাগ করা' পাওয়া যায়নি
ভাদ্দাদি কার্টিক

সুইফট 4 এবং এক্সকোড 9.1 "ত্রুটির সাথে অভিযোগ করেছে: <EXPR>: 3: 32: ত্রুটি: অ-ফাংশন টাইপের 'ইউআইএপ্লিকেশন' ইউআইএপ্লিকেশন.সারেড অ্যাপ্লিকেশন ()। কী উইন্ডো?। রিসার্চডেস্ক্রিপশন ()"
জেসন হ্যারিসন

0

সুইফ্ট / এক্সকোড 10 এর জন্য, এটি ডিবাগ কনসোলটিতে প্রবেশ করুন:

po yourView.value(forKey: "recursiveDescription")!

এটি প্রদত্ত যে কোনওটির জন্য পুনরাবৃত্ত হায়ারার্কি প্রিন্ট করবে UIView

(ক্রেডিট: পুনরাবৃত্তির বিবরণ ব্যবহার করে আপনার দর্শন শ্রেণিবিন্যাস কীভাবে ডিবাগ করবেন )

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